- ベストアンサー
エクセルの入力規則設定について
- エクセルの入力規則に関する質問です。現在の表の手数料部分に制限をかけたいという要望があります。
- 手数料の計算式は3通りあり、それぞれを入力規則で制限したいです。さらに、手数料の見た目を特定の文字にしたいです。
- 上記の要望を実現する方法について、ご助力いただけると幸いです。困難な質問かとは思いますが、よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
意図していることと違ったら申し訳ないのですが、 C1の入力規則を [種類]:リスト [元の値]: 0,=B1*0.1,=B1*0.1+150 とすれば3種の計算式以外の入力はできなくなります。 また、A~Cでの表示ですが、見かけ上なら可能です。 C1の入力規則の[元の値]を A,B,C として、 別のセル、例えばE1に =IF(C1="A",0,IF(C1="B",B1*0.1,IF(C1="C",B1*0.1+150,""))) と、計算します。 C1の数値を使っていた箇所はすべてE1に直し、Eの横幅を0にすれば見た目もすっきりします。
その他の回答 (4)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
No.4です。No.4の式は、A列が未入力だと、エラーを表示します。これが嫌だという場合は、式の途中に「1+」と「,""」を次のとおり挿入すれば、解決します。 =choose(1+countif(f:f,a1)+2*countif(g:g,a1)+3*countif(h:h,a1),"","",b1*10%,b1*10%+150) または =choose(1+countif(f:f,a1)+2*countif(g:g,a1)+3*countif(h:h,a1),"","A","B","C")
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
お客様の全体の人数が少ないならコンパクトな数式1本で済ますこともできるでしょうが、何人か分からないので、式のほかにリストを用意するということにします。F列にAの人、G列にBの人、H列にCの人のリストが作成済みだということにします。なお同一人物が入力されているセルの個数は1つのみとしてください。 C1セルに次のとおり入力 「売上×10%+150」などの計算結果を表示する場合 =choose(countif(f:f,a1)+2*countif(g:g,a1)+3*countif(h:h,a1),"",b1*10%,b1*10%+150) 「A」、「B」または「C」を表示する場合 =choose(countif(f:f,a1)+2*countif(g:g,a1)+3*countif(h:h,a1),"A","B","C")
- keithin
- ベストアンサー率66% (5278/7941)
次の通りに行います。ただし表のレイアウトに依存するので,「実は質問に書いた通りじゃありませんでした」では動きません。 練習としてご自身がご相談に書かれたとおりに作成し,まず出来る事を確認してから実地に応用してください。 手順: C1セルを選択する(必ず) 名前の定義を開始する 名前 typeA 参照範囲 ="" として追加する 同様にC1を選んだまま 名前 typeB 参照範囲 =B1*10% 名前 typeC 参照範囲 =B1*10%+150 をそれぞれ追加する。(A,B,Cではないので間違えないこと) C列を列選択し,C1セルがアクティブセルになっている事を確認の上,入力規則を開始する 種類 リスト 元の値 ,=typeA,=typeB,=typeC と設定する。(先頭にカンマがあるのを見落とさないこと)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! No.1さんが仰っているようにプルダウンでA~Cまでを表示させ、D列に計算式を入れてやるのが 一番簡単な方法だと思いますが、 >C1に入力された見た目を、 >『A』『B』『C』のようにできれば・・・ とあるので、無理やりって感じです。 VBAになってしまいますが一例です。 C列のリスト表示は「A・B・C」のいずれかに設定しておきます。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストして、C列のプルダウンでA~Cのいずれかを選んでみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Columns(3)) Is Nothing Or Selection.Count <> 1 Then Exit Sub Application.EnableEvents = False If Target = "A" Then Target = "" MsgBox Target.Offset(, -2) & "様の" & vbCrLf & "手数料は、『A』です。" ElseIf Target = "B" Then Target = Target.Offset(, -1) * 0.1 MsgBox Target.Offset(, -2) & "様の" & vbCrLf & "手数料は、『B』です。" Else Target = Target.Offset(, -1) * 0.1 + 150 MsgBox Target.Offset(, -2) & "様の" & vbCrLf & "手数料は、『C』です。" End If Application.EnableEvents = True End Sub 'この行まで ※ C列には計算結果を表示し、「見た目」の部分はメッセージボックスで表示するようにしてみました。 的外れならごめんなさいね。m(_ _)m
補足
有難うございます。早速試してみましたところ無事にできました。m(__)m 一番分かりやすかったです! ちなみに、この "A" "B" "C" 欄に『10%』のように“%”を入れたいのですが、 『%』の文字が悪いのか、上手くできませんでした。 この場合はどうすれば可能でしょうか? 恐縮ながら、こちらもご教授の程、お願いできませんでしょうか? 何卒宜しくお願い致します。m(__)m