dポイントプレゼントキャンペーン実施中!

エクセルの入力規則に関する質問です。
現状で活用しているエクセルの表は以下のように入力されていますが、
“C1の手数料部分を入力規則のように、数通りの計算式で制限をかけたい”という質問です。

A1(お客様名) B1(売上) C1(手数料) D1(報酬額)

A1のお客様名によって、C1の手数料が3通りあります。
(1)なし(空欄)
(2)B1(売上)×10%
(3)B1(売上)×10%+150円


この3通りの計算式を“入力規則のように制限”を設けて、
管理できると助かるのですが、可能でしょうか?

尚、可能であれば、更にC1に入力された見た目を、
『A』『B』『C』のようにできれば、有難いです!
(1)なし(空欄)⇒A
(2)B1(売上)×10%⇒B
(3)B1(売上)×10%+150円⇒C

困難な質問かとは思いますが、分かる方は、ご助力頂ければ助かります。
何卒、よろしくお願い致します。

A 回答 (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にすれば見た目もすっきりします。

この回答への補足

有難うございます。早速試してみましたところ無事にできました。m(__)m

一番分かりやすかったです!


ちなみに、この "A" "B" "C" 欄に『10%』のように“%”を入れたいのですが、
『%』の文字が悪いのか、上手くできませんでした。


この場合はどうすれば可能でしょうか?




恐縮ながら、こちらもご教授の程、お願いできませんでしょうか?



何卒宜しくお願い致します。m(__)m

補足日時:2012/06/01 23:11
    • good
    • 0

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")
    • good
    • 0

お客様の全体の人数が少ないならコンパクトな数式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")
    • good
    • 0

次の通りに行います。

ただし表のレイアウトに依存するので,「実は質問に書いた通りじゃありませんでした」では動きません。
練習としてご自身がご相談に書かれたとおりに作成し,まず出来る事を確認してから実地に応用してください。


手順:
C1セルを選択する(必ず)
名前の定義を開始する
名前 typeA
参照範囲 =""
として追加する

同様にC1を選んだまま
名前 typeB
参照範囲 =B1*10%
名前 typeC
参照範囲 =B1*10%+150
をそれぞれ追加する。(A,B,Cではないので間違えないこと)


C列を列選択し,C1セルがアクティブセルになっている事を確認の上,入力規則を開始する
種類 リスト
元の値 ,=typeA,=typeB,=typeC
と設定する。(先頭にカンマがあるのを見落とさないこと)
    • good
    • 0

こんにちは!


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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!