こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

■エクセルで複数のセルが一致する場合に返す方法

色々試しているのですがどうしても出来ないのでどなたか教えて下さい。

例えば
Sheet2に下記のような果物のその日の値段を表にした
値段表を作ったとします。


   A   B   C   D…
1  日付  りんご みかん  ぶどう
2 1月1日  100   150   50
3 1月2日  200   150   40


そしてSheet2に、毎日買った分を書いていきたいのですが
これを

  A     B   C…
1 1月1日  りんご  100 
2 1月2日  りんご  200
3 1月2日  みかん  150




というようにA1が1月1日でB1が「りんご」だった時に
Sheet1の1月1日のりんごの値段が
自動的に入るようにしたいのです。


IF関数でやってみたのですが、「AでありBである時、A'のB'の値を返す」という方法がうまくいきません。

分かりにくい説明かもしれませんがどうか良い方法を教えて下さい。

投稿日時 - 2006-06-22 14:23:33

QNo.2231313

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(5)

ANo.5

例データ
Sheet1に
A1:D3
日付りんごみかんぶどう
1月1日10015050
1月2日20015040
果物種類が3種の例です。
ーーー

Sheet2の
A1に
=INDEX(Sheet1!$A$1:$D$100,INT((ROW()-1)/3)+1+1,1)
と入れて第6行まで式を複写。
B1に
=INDEX(Sheet1!$A$1:$D$100,1,MOD(ROW()-1,3)+1+1)
と入れて第6行まで式を複写。
C1に
=INDEX(Sheet1!$A$1:$D$100,INT((ROW()-1)/3)+1+1,MOD(ROW()-1,3)+1+1)
と入れてだい6行まで式を複写。
ーーー
結果
Sheet2のA1:C6に
2006/1/1りんご100
2006/1/1みかん150
2006/1/1ぶどう50
2006/1/2りんご200
2006/1/2みかん150
2006/1/2ぶどう40
となる。
式で3となっているところが、果物の数が影響しているところ。
ここを実際にあわせて変えてください。
式を日数x果物数を超えて複写してもエラーにしない方法は主題で無いので略。
0=買わなかった果物数のセルの、対応行を省くのは難物。

投稿日時 - 2006-06-22 22:48:58

ANo.4

#2です。
シート2のC1に入れるのですよ。必ず100という答えが返ってくるのですが。。。
サービスでエラー処理もすると、

=if(B1="","",INDEX(Sheet1!$A$1:$D$3,MATCH(A1,Sheet1!$A$1:$A$3,0),MATCH(B1,Sheet1!$A$1:$D$1,0)))

ちなみにindex関数や、match関数でのデータ範囲は今回のケースのシート1のA1~D3にしてますので、実際にそれ以上ある場合は増やして下さい。
できるできないは、数式をそのままコピペして、質問と同じ表を作ってから試して下さい。こちらで実行確認済みなので、100が出ないということはありえません。
いきなり実際使っている表に入れて試すのではなく、必ず質問と同じ表を作ってから試して下さい。

投稿日時 - 2006-06-22 22:37:46

お礼

勿論同じものをつくり、コピーペーストで試していたのですが、何か私の方でミスがあったみたいです。
動作しました。
ありがとうございました。

投稿日時 - 2006-06-23 18:14:55

Sheet2!C1: =VLOOKUP(A1,Sheet1!A$1:D$100,MATCH(B1,Sheet1!A$1:D$1,0),FALSE)

投稿日時 - 2006-06-22 20:25:34

ANo.2

シートがどちらも2になってるので、毎日買った分のほうのシートを2として、果物のその日の値段の表がシート1だとすると、
シート2のC1に
=INDEX(Sheet1!$A$1:$D$3,MATCH(A1,Sheet1!$A$1:$A$3,0),MATCH(B1,Sheet1!$A$1:$D$1,0))
と入れて下方向にオートフィルして下さい。
尚、エラー処理してませんので、if関数等でして下さい。

投稿日時 - 2006-06-22 14:43:19

補足

ご回答ありがとうございます。
質問に間違いがあり大変失礼致しました。
最初の方がシート1です。
(ao777様のおっしゃることで正しいです。)

そして試してみましたが、やはりうまくいきません。
エクセルが大得意という訳ではないのでエラー処理というものも出来ません…
何か間違っているのでしょうか…

投稿日時 - 2006-06-22 16:53:27

ANo.1

シート2のC1に=OFFSET(Sheet1!$A$1,MATCH(A1,Sheet1!A:A,0)-1,MATCH(B1,Sheet1!$1:$1,0)-1)を入力し、下方向にコピーして下さい。

投稿日時 - 2006-06-22 14:34:33

補足

早速のご回答ありがとうございます。
試してみたのですが入力したC1にしか反映されず、
他のセルには別の値や、タイトルとして使っている「りんご」などの文字や#N/Aというようなエラーが表示されてしまいました…

何か違ったのでしょうか?

投稿日時 - 2006-06-22 16:50:46

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-