プロが教える店舗&オフィスのセキュリティ対策術

エクセルで、
例で
都道府県 果物 価格
A県 りんご 100
バナナ 200
なし 300

B県 りんご 150
バナナ 250
すいか 350

C県 りんご 125
バナナ 225
すいか 325
このようなのが、県別で10個分
あるのですが、
別シートでも、同じシートでも、いいのですが、
県名と果物はプルダウンで、
入力すると価格がポンとでるようにしたいのですが、
果物が、同じものがあるので、
プルダウンで連動しようと果物だけでひとくくりして
名前の定義をすると思うと、今度vlookupで、
果物と価格が連動できずになるので、
どなたか、お知恵をお貸しください。
宜しくお願い致します。

A 回答 (4件)

県名を全部うめて、SUMIFS関数とか。

    • good
    • 0
この回答へのお礼

今回はデータの量がさほどなかったのもあったので
SUMIFS関数を採用いたしました。
ありがとうございました。

お礼日時:2018/02/20 11:23

図を例にします。


A1とB1セルがプルダウンメニュー、C1セルが結果表示になります。


設定方法は以下のとおり

A1セル
データの入力規則→設定→入力値の種類にリストを選択
元の値 =$A$4:$A$6

B1セル
データの入力規則→設定→入力値の種類にリストを選択
元の値 =OFFSET(C4,2,(MATCH(A1,A4:A6,0)-1)*2,4,1)

C1セル
=IFERROR(VLOOKUP(B1,OFFSET(C4,2,(MATCH(A1,A4:A6,0)-1)*2,4,2),2,FALSE),"")


B1セルとC1セルで使用しているOFFSET関数の後ろから2番目の"4"部分には
果物の数が最も多い県の果物の数をいれて下さい。


県を増やす場合は
A列の表を下に追加、A1セル、B1セル、C1セルの範囲設定変更
C4セルの表を横に追加、OFFSET関数の後ろから2番目の数を前述のとおり変更
県の順番は両方の表で一致させてください。
「エクセルで、 例で 都道府県 果物 価格」の回答画像4
    • good
    • 0
この回答へのお礼

ありがとうございます。元の値にoffset関数を使うのですね。
理屈がわかれば、こちらの方がいいかもしれません。
ミソ的な部分を含めて、自分でやってみます。

お礼日時:2018/02/20 11:26

こんばんは!



VBAと入力規則の併用ではどうでしょうか?
一例です。

↓の画像のようにSheet2に対応表を作成しておきます。
そして、Sheet1のA列は入力規則のリストから「都道府県」をリスト表示させるようにします。
次にA列を選択すれば作業列(E列)にSheet2の表内の価格がある品名のみを表示するようにし、
それを入力規則のリスト候補に使用します。
そのためにまず↓のコードをSheet1のシートモジュールにしてください。

Private Sub Worksheet_Change(ByVal Target As Range) '//この行から//
Dim i As Long, lastRow As Long
Dim c As Range, wS As Worksheet
If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub
Set wS = Worksheets("Sheet2")
lastRow = Cells(Rows.Count, "E").End(xlUp).Row
If lastRow > 1 Then
Range(Cells(2, "E"), Cells(lastRow, "E")).ClearContents
End If
Set c = wS.Rows(1).Find(what:=Target, LookIn:=xlValues, lookat:=xlWhole)
For i = 2 To wS.Cells(Rows.Count, c.Column).End(xlUp).Row
If wS.Cells(i, c.Column) <> "" Then
Cells(Rows.Count, "E").End(xlUp).Offset(1) = wS.Cells(i, "A")
End If
Next i
Target.Offset(, 1).ClearContents
End Sub '//この行まで//

これでA列のリストを選ぶたびにE列に価格がある品名だけが表示されます。
次にB列には入力規則のリストを設定し、元の値の欄に
=OFFSET(E$1,1,,COUNTA(E:E)-1)

という数式を入れます。

最後にC2セルに
=IF(COUNTBLANK(A2:B2),"",INDEX(Sheet2!B:D,MATCH(B2,Sheet2!A:A,0),MATCH(A2,Sheet2!B$1:D$1,0)))

という数式を入れフィルハンドルで下へずぃ~~~!っとコピー!
これでなんとかお望みの動きにならないでしょうか。

※ 作業列が目障りであれば非表示にするか、遠く離れた列にしてください。
尚、作業列の列番号が変わるとVBAのコードと入力規則の数式も変わってきます。m(_ _)m
「エクセルで、 例で 都道府県 果物 価格」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございます。もっとデータが多くなってくれば、
この方法も使用したいと思います。

お礼日時:2018/02/20 11:24
    • good
    • 0
この回答へのお礼

ありがとうございます。
言葉をくっつける方法は見てたのですが、
これはこれでアリかなと思ってましたが、
自分だけ用としてのデータだといいかもしれません。

お礼日時:2018/02/20 11:27

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