• ベストアンサー

エクセルVBAで対応する表の数値を取得したいのですか・・・

こんばんは。教えていただけるでしょうか。 表形式で表現したかったのですが、無理のようでしたので、下のように表しました。 二つのシート[売上データ][原価表]があります。 [売上データ]にはランダムに各支店で売り上げた商品名がデータとしてあります。この[売上データ]のL列の「原価」に支店ごとに原価の違う原価の値を入れていきたいのですが、どのようにすればいいでしょうか。 支店ごとに違う原価の値は「原価表」のBからF列に商品名ごとに表になっています。 たとえば、[売上データ]のA列に“商品A”という商品が、J列の支店名に“札幌”とあったとすると、 [原価表]のA列の中から商品名を探して、B列の札幌の列から“商品A”に対応する原価の値を探して、[売上データ]のL列(原価)に順に入れていくというようにしたいのですがさっぱりわかりません。関数でもできると思うのですが、それも私には難しくわかりません。どなたか教えていただけるでしょうか。よろしくお願いします。 [売上データ] A1 商品名 B1 項目a C1 項目b ・ ・ ・ J1 支店名 ・ L1 原価 [原価表] A1 商品名 B1 札幌 C1 東京 D1 名古屋 E1 大阪 F1 福岡

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

  • ベストアンサー
  • Raistlin
  • ベストアンサー率63% (65/102)
回答No.3

順番に検証しましょう。 ・INDEX関数の使い方をヘルプで確認してください。  kobouzu_suさんがフォローして下さっていますが、検索したい表が以下のようになっている時、(大抵は)1番目の引数は●の範囲のみを指定します。  ○□□□□□  ■●●●●●  ■●●●●●  ■●●●●● ・MATCH関数の使い方をヘルプで確認してください。  2つあるMATCH関数の2番目の引数はそれぞれ、■および□の範囲になっていますか。 ・「MATCH(A2,fcost!$A$2:$A$4,0)」および「MATCH(J2,fcost!$B$1:$F$1,0)」だけを式として入力した場合に、期待通りの答えが返ってきていますか。 重複になりますが、「何をしたら」どうなったかの「何をしたら」が欠落していては、解決の難易度が上がりますので、必ず記載してください(逆に回答する立場の時に必要な情報があるかどうかを考えてください)。 また、細かいことですが、解決しない時のコメントは補足欄を使ってくださいね。

reprogress
質問者

お礼

詳しいご説明ありがとうございます。もう少し自分でも検証してみようと思います。

その他の回答 (2)

回答No.2

こんにちは。 >私のやり方がまちがっているでしょうか? そんなことを言われても回答する方には質問者がどんなやり方をしたのか分かりませんので・・・・(^^;;; 考えられることは以下のようなことです。 >=INDEX(シート名!$B$2:$F$4  $B$2 の列番号Bが、次のように、$A$2とAになってませんか? =INDEX(シート名!$A$2:$F$4 これだと、   札幌 => 商品名   東京 => 札幌の単価   福岡 => 大阪の単価 と、ひとつ前の列が表示されることになります。 それから、質問のタイトルにはVBAとありますが、これは? 以上です。  

reprogress
質問者

お礼

ありがとうございます。冷静にもう少し考えてみます。

  • Raistlin
  • ベストアンサー率63% (65/102)
回答No.1

原価表のシート名を"fcost"で、原価表の範囲がA1:F4の時、L2の式は以下のとおりです。 =INDEX(fcost!$B$2:$F$4,MATCH(A2,fcost!$A$2:$A$4,0),MATCH(J2,fcost!$B$1:$F$1,0))

reprogress
質問者

お礼

ありがとうございます。関数を手作業で当てはめてやってみましたが、[売上データ]の商品名が表示されてしまいます。私のやり方がまちがっているでしょうか?

関連するQ&A