[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『検索値の下の段はVLOOKUPでは抽出できませんか?』(komu)
[A] [B] [C]
--------------------------------
[1] 会社名 部・店名 金 額
--------------------------------
[2] AAA商会 原金額 10,000
[3] 埼 玉 2,000
[4] 鹿児島 1,000
[5] 東京保有額 7,000
[6]
[7] BBB商事 原金額 20,000
[8] 大 阪 5,000
[9] 東京保有額 15,000
[10] : : :
[11] : : :
というSHEETから別のSHEETに原金額(C2)を移すのは =VLOOKUP(B1,'SHEET1'!A2:C5,3,0)で出来るのですが、 検索値である「AAA商会」はA2のセルにしか記載していない場合、 その下の埼玉や2,000、更にその下の鹿児島、1,000という数字を 別SHEETに抽出する方法はありませんか? VLOOKUPだと検索値の横しか抜き出せないので悩んでいます。
つまり、SHEET2のB1に入力規制でリストから選択にして「AAA商会」 を選んだ際に自動的にSHEET1から数字・支店名を移し、下記のような 表をつくりたいのですが、何か良い方法はありませんか?
[A] [B] [C] [D]
-------------------------------------
[1] 会社名 AAA商会 原金額 10,000
-------------------------------------
[2]
[3] 部・店名 金 額
----------------------
[4] 埼 玉 2,000
[5] 鹿児島 1,000
[6] 東京保有額 7,000
宜しくお願いします。
VLOOKUP関数ではありませんが、、、
こんなのは如何でしょう?
※作業列を使用しています。
Sheet1 [A] [B] [C] [D]
[1] 会社名 部・店名 金額
[2] AAA商会 原金額 10,000
[3] 埼玉 2,000 AAA商会
[4] 鹿児島 1,000 AAA商会
[5] 東京保有額 7,000 AAA商会
[6]
[7] BBB商事 原金額 20,000
[8] 大阪 5,000 BBB商事
[9] 東京保有額 15,000 BBB商事
D2 =IF(COUNTA(A2:B2)=1,INDEX($A$1:A2,MATCH(9^99,CODE($A$1:A2))),"")
↑配列数式
Ctrl + Shift + Enter で確定
{ 数式 }となればOK。
以下必要範囲までコピー
Sheet2 [A] [B] [C] [D]
[1] 会社名 AAA商会 原金額 10,000
[2]
[3] 部・店名 金額
[4] 埼玉 2,000
[5] 鹿児島 1,000
[6] 東京保有額 7,000
A4 =IF(COUNTIF(Sheet1!$D$1:$D$20,$B$1)<ROW(A1),"",
INDEX(Sheet1!B$1:B$20,SMALL(IF(Sheet1!$D$1:$D$20=$B$1,ROW($A$1:$A$20),""),ROW(A1))))
↑こちらも配列数式です。
必要範囲までコピー
※配列数式は、データ量によっては重たくなるかもしれません。。。
叩き台程度って事でw
(キリキ)(〃⌒o⌒)b
キリキさん、返信ありがとうございます。 が・・・、さっぱり意味が分かりません。 簡単に説明いただけると非常に助かります。
あと、配列数式は少し使ったことがあるのですが、 いまひとつ理解できず、配列数式を使わない方法も、 もしあれば教えてください。
意味とは? 配列数式のことでしょうか? 式の内容でしょうか? 配列数式はこちらを参考にしてみてください。 【エクセル(Excel)「配列数式」講座】 http://pc21.nikkeibp.co.jp/special/hr/ 式の内容は、、、 何処がわかりません? 1.の式 =IF(COUNTA(A2:B2)=1,INDEX($A$1:A2,MATCH(9^99,CODE($A$1:A2))),"") ~~1 ~~~~~~~~~~~~~~2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~5 ~~~~~~~~~~~~~~~~~~~~~~~~4 ~~~~~~~~~~~~3 1.IF関数です。(省略しますw 2.COUNTA関数です。 A列が空欄で、B列のみ文字が入っているものを使用したいため、上記の数式をIF関数の条件にしています。 3.上記条件で「真」の場合はこちらになります。 CODE関数で、入力されているものの「先頭文字」の番号を返します。 入力されていない場合は「#VALUE!」が返ります。 4.その番号が何処まで入力されているかを調べるために、MATCH関数を使用し、 範囲内での相対的な位置を表す数値を返します。 5.その位置を、INDEX関数の範囲の中から抽出しています。 そして「偽」の場合は、勿論「空欄」が返ります。 2.の式 =IF(COUNTIF(Sheet1!$D$1:$D$20,$B$1)<ROW(A1),"", INDEX(Sheet1!B$1:B$20,SMALL(IF(Sheet1!$D$1:$D$20=$B$1,ROW($A$1:$A$20),""),ROW(A1)))) こちらは長いので、考え方のみでw COUNTIF関数で、指定した B1 のものがいくつあるかを数えています。 そして、その数が ROW関数(入力してある「行の位置」)より大きかったら「偽」のため「空欄」を返します。 「真」だったら、Sheet1!$D$1:$D$20 の中に B1 と同じ物を探し、あればその入力されている ROW関数(行の位置)を、無ければ ""(空欄)を返します。 その出てきた回答に対し、SMALL関数で小さい順に抽出し、INDEX関数でそのセルに入力されたものを返しています。 こんな感じなんですが。。。 説明へたで、ごめんなさいね・・・ >配列数式を使わない方法も、もしあれば教えてください。 できるかもしれませんが、、、 σ(^o^;)には、考える時間も、閃きもありませんでした。。。 時間が無いので、考えていませんが、、、 [[20060512220025]]『VLOOKUP関数の結果を別の列に縦書きに詰めて表示したい。』(sarai) のLOOKUPさんの数式がヒントになるかもしれません。 (キリキ)(〃⌒o⌒)b
キリキさん、 スペッシャルサンキュウーでございます。 丁寧な説明でようやっと意味が分かりました。
配列数式なしの方法はまだ見れてませんが、一先ず御礼まで。 <m(__)m>
上記過去ログを参考に配列ではないものを考えてみましたb
表は、最初の表をそのまま使用するとして、、、
Sheet1
D2 =IF(AND(COUNTA(A2:B2)=1,A2=""),IF(INDEX($A$1:A2,MAX(INDEX((($A$1:A2>0)*ROW($A$1:A2)),)))=Sheet2!$B$1,"○",""),"")
以下コピー
Sheet2
A4 =IF(COUNTIF(Sheet1!$D$1:$D$20,"○")<ROW(A1),"",VLOOKUP("○",IF({1,0},Sheet1!$D$1:$D$20,Sheet1!B$1:B$20),2,))
B4へコピー
A5 =IF(COUNTIF(Sheet1!$D$1:$D$20,"○")<ROW(A2),"",
VLOOKUP("○",IF({1,0},INDEX(Sheet1!$D$1:$D$20,MATCH($A4,Sheet1!$B$1:$B$20,)+1,):Sheet1!$D$20,INDEX(Sheet1!B$1:B$20,MATCH($A4,Sheet1!$B$1:$B$20,)+1,):Sheet1!B$20),2,))
A:B列の必要範囲まで下にコピー
INDEX関数も、データが多いと重いかもしれませんがwww
※こちらに関しては、説明はしませんので頑張ってヘルプとにらめっこして下さい^^
わからなかったところだけお聞きしてくださいな〜♪
(キリキ)(〃⌒o⌒)b
D1=IF(B1="","",INDEX(Sheet2!C2:C20,MATCH($B$1,Sheet2!$A$2:$A$20,0))&"") A4=IF(B1="","",INDEX(Sheet2!B2:B20,MATCH($B$1,Sheet2!$A$2:$A$20,0)+1)&"") A5=IF(A4="","",INDEX(Sheet1!B$2:B$20,MATCH($B$1,Sheet2!$A$2:$A$20,0)+ROW(A2)))&"" 下へフィールコピー A4:A20選択で右へフィールコピー
普通にenterで (JET)
MATCH($B$1,Sheet2!$A$2:$A$20,0)+ROW(A2)
^^^^^^^検索行(AAA商会で検索)その下の行選択
ROW(A2)=2 ROW(A3)=3 ROW(A4)=4 と下の行へ変化
[5] 東京保有額 7,000 [6] この行空白行でやってます。 [7] BBB商事 原金額 20,000 (それぞれの会社切れ目に空白行)
なるほど。 σ(^o^;)は、難しく考えすぎていたようですね^^; (キリキ)(〃⌒o⌒)b
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.