• ベストアンサー

VLOOKUPの応用について困っています。

    A    B    C    D    E 1 A地区  建物   (1)   (2)    (3) 2 A地区  車両   (4)   (5)    (6) 3 B地区  建物   (1)   (2)    (3) 4 B地区  車両   (4)   (5)    (6)       5  6 B地区  車両   (4)   (5)    (6) 上記のような表でA6に”B地区”、B6に”車両”と入力した場合、A1:E4までの表で入力されている(4)、(5)、(6)をC6:E6に表示させたいのですが何か良い方法ありますか。 すみませんが教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#204879
noname#204879
回答No.3

C6: =INDEX(C$1:C$4,SUMPRODUCT(($A$1:$A$4=$A6)*($B$1:$B$4=$B6),ROW(A$1:A$4)),)

clan0319
質問者

お礼

回答ありがとうございます。 おかげさまで解決し、満足のいく結果が得られました。

その他の回答 (6)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.7

Cに作業列を入れて良ければ、AとBの文字列に、デリミタを挟んで合成し、D6~E6は、C6を検索値にした、VLOOKUPを使えばいかがでしょう。☆のところは、お好きな、出てきそうもない文字にしてください。 ..................A...............B.............................C...............D...............E...............F ..1.....A地区.........建物.......A地区☆建物............(1)...........(2)...........(3) ..2.....A地区.........車両.......A地区☆車両...........(4)...........(5)...........(6) ..3.....B地区.........建物.......B地区☆建物............(1)...........(2)...........(3) ..4.....B地区.........車両.......B地区☆車両...........(4)...........(5)...........(6) ..6.....B地区.........車両.......B地区☆車両...........(4)...........(5)...........(6)

clan0319
質問者

お礼

回答ありがとうございました。 参考とさせていただきます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

#5です。DSUM関数では、式の複写で各条件の結果を出せないので、 DSUM関数とVBA(マクロの記録の応用)でやってみました。 A1:E5 元データ 地区 種類 A B C A地区 建物 -1 -2 -3 A地区 車両 -4 -5 -6 B地区 建物 -1 -2 -3 B地区 車両 -4 -5 -6 条件を入れるセルと結果 A8:E12 そのうちA9:B12(地区+種類)は条件として入力しておく。 地区 種類 A B C B地区 車両 -4 -5 -6 B地区 建物 -1 -2 -3 A地区 車両 -4 -5 -6 A地区 建物 -1 -2 -3 ーー 作業エリアと条件指定エリア H1:I1は入力しておく。その下行はプログラムでセットして 使う。 H1:I2 地区 種類 A地区 建物 ーーー H4:L5 見出しとして第4行は入れておく。 その下行はプログラムでセットして使う。 地区 種類 A B C A地区 建物 -1 -2 -3 ーーーー VBAコード フィルタオプションの設定のマクロの記録を修正。 Sub test02() For i = 9 To 12 Range("A1:E5").Select v = Range("A" & i & ":B" & i) Range("H2:I2") = v MsgBox "aa" Range("A1:E5").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "H1:I2"), CopyToRange:=Range("H4:L5"), Unique:=False U = Range("J5:L5") Range("C" & i & ":E" & i) = U Next i End Sub ーー 実行すると E9:L12(実はC9:L12)がセットされた(検索された)。 ーーーー 今までに無い回答と思う。 ただ作業エリアが必要であったりする。

clan0319
質問者

お礼

ありがとうございます。 VBAは勉強途中なので、これからの参考とさせていただきます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

>VLOOKUPの応用について VLOOKUP関数は1つ1列の値しか検索できません。ですから >B地区  車両 のように2列に分かれたものは検索できません。 なんぼ考えてもダメですから、考えて時間を無駄にしないように。 ーーー そこで2列を1列にしたらどうかということになります。空き列に 2列を結合した文字列を作る。 検索する方も2セル結合して検索する。 (これにはケースは少ないものの、X&Y=Z+uの型の文字列2つが無いか良く検討しておく必要があるが。) ーーー 余り回答が出ないが データ A1:E5 クライテリア=条件 H1:I2 ーー A列  B列  C列  D列   E列   H列  I列 地区 種類 A B C 地区 種類 A地区 建物 -1 -2 -3    B地区 車両 A地区 車両 -4 -5 -6 B地区 建物 -1 -2 -3 B地区 車両 -4 -5 -6 抽出する範囲に A8:E9 地区 種類 A B C B地区 車両 -4 -5 -6 ーーーー 操作 データ フィルタ フィルタオプションの設定 指定した範囲 リスト範囲 A1:E5 検索条件範囲 H1:I2 抽出範囲 A8:E9 OK で上記 E8:E9 この欠点はA10以下を連続して(f式服者的に)出すのが難しいことである。 1つだけ(順次H2・I2を変えて検索するには良い。

clan0319
質問者

お礼

回答ありがとうございました。 参考とさせていただきます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

一例です。 C6に次の数式を入力して右方向にコピー =INDEX(C$1:C$4,SUMPRODUCT((CONCATENATE($A$1:$A$4,$B$1:$B$4)=$A6&$B6)*(ROW($A$1:$A$4))))

clan0319
質問者

お礼

回答ありがとうございました。 おかげさまで解決し、はじめて使う関数も勉強になりました。 ありがとうございます。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

重複がなければですが F列に =A1&B1 下フィルして準備しておき C6セルに =INDEX(C1:C4,MATCH($A6&$B6,$F1:$F4,FALSE)) 右フィルでは

clan0319
質問者

お礼

回答ありがとうございました やってみましたが、自分の操作が悪いのか"#VALUE!"になってしまいました。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  BとCの間に列を挿入(B'とする)して、「=A1&B1」という式を入れ、全ての行にコピーします。  あとは、C6の式は「=vlookup(B'6,B'1:E4,4,false」としたらどうでしょう。  B'列の値が一意になる必要があります。 では。

clan0319
質問者

お礼

早速の回答ありがとうございました。 =A1&B1を挿入すると、vlookupでも可能ですね。 ありがとうございました。

関連するQ&A