Excelで以下の実現方法にどん詰まりしています…
1つのシート内にAとBの表があります。
<表A>
コード1 コード2
100 8
100 2
200 3
<表B>
コード1 コード2 金額
100 1 1000
100 2 2000
100 5 4000
100 8 6000
150 1 1500
200 3 3200
表Aのコード1、コード2と表Bのコード1、コード2が合致する
表Bの金額を取得したいのですが、2つのキーに合致させるという方法が
イマイチ実現できません。一度にできるものなのでしょうか?
MATCHでコード1の存在の有無と行番号を取得し、取得した行番号から
コード2をMATCHして…でも、コード2を検索するには範囲がわからないとダメだよな…
…などなど、ぐるぐる中です…
よろしくお願いします…
※コード1、2ともにソートされています。
No.1ベストアンサー
- 回答日時:
例えば、
「コード1が100で、コード2が2の場合 ⇒ 2000を返す」
ということですよね。
コード1とコード2を繋いだ値について検索するのが手っ取り早いと思います。
例えば、<表A>がA,B列,<表B>がE,F,G列にあるとして、
A列とB列の値を結合した値(ex.100_8)を、
E列とF列の値を結合した配列(ex.{100_1,100_2,100_5,…,200_3}から探して、
ヒットした行のG列の値を返す。
イ案 =INDEX($G$1:$G$99,MATCH(A1&"_"&B1,INDEX($E$1:$E$99&"_"&$F$1:$F$99,),0))
Excel2003で動作確認済。
----------------------------------------------------------------------------
蛇足
この手の数式はいろんな書き方ができます。
基本的には趣味や慣れの問題で、どれが良いということは特にありませんが、
一応ご参考まで。
ロ案 =INDEX($G$1:$G$99,INDEX(MATCH(A1&"_"&B1,$E$1:$E$99&"_"&$F$1:$F$99,0),))
※配列処理をさせるためのダミー関数INDEX(~,)はMATCHの外でもいい。
ハ案 =INDEX($G$1:$G$99,SUMPRODUCT(MATCH(A1&"_"&B1,$E$1:$E$99&"_"&$F$1:$F$99,0)))
※INDEXよりSUMPRODUCTの方が好きという人も多いみたい。
二案 =INDEX($G$1:$G$99,MATCH(A1&"_"&B1,$E$1:$E$99&"_"&$F$1:$F$99,0))
※Ctrl+Shift+Enterで配列数式として入力する場合はダミーの関数はいらない
ホ案 =OFFSET($G$1,SUMPRODUCT(MATCH(1,(A1=$E$1:$E$99)*(B1=$F$1:$F$99),0))-1,0)
※別案:A列とE列,B列とF列を直接比較して論理演算を行う
※INDEXよりOFFSETの方が好きという人も結構いるみたい。
などなど。
お礼、遅れてすみません!
VBAに逃げようかと思っていたところです。
イ案でうまく行きました。
上の例の書き方が悪かったのですが、
「表A」のコード1とコード2を結合して表Bを参照しようにも
実際の「表B」のコード1とコード2の間に1列挟まっていて
VLOOKUPを使ったやり方でうまく参照できませんでした。
普段、Excelの計算式は"SUM"など、ごく標準的な計算しか使わないもので…
ありがとうございました(´∀`)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelファイルのシール1.2.3と...
-
現在と現在から20年前の2003〜2...
-
添付してある【 index.php 】に...
-
使用中のセクタが不良セクタに...
-
SSDにTRIMをしたいのですがSSD...
-
ファイルを記録してあるセクタ...
-
SSDにTRIMってした方が良いので...
-
SSDに不良セクタが発生したら、...
-
CrystalDiskInfoの現在地や最悪...
-
エクスプローラで見る画面の明...
-
SSDの不良セクタを代替セクタに...
-
AzureとOneDriveって何が違うの...
-
SSDに不良セクタがあるかどうか...
-
exFATとAPFSではどっちがファイ...
-
ローカルフォルダの共有化について
-
ロジクールのマウスはチャタリ...
-
ファイルシステムがNTFSだとexF...
-
S.M.A.R.T.を見るのに1番有名な...
-
コマンドプロンプトって「cmd」と...
-
2つのファイルのバイナリをコン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows 11の品質、評判は・・...
-
メーカー製のノートパソコンが...
-
ベリファイは光学ディスクには...
-
ベリファイよりコンペアの方が...
-
バグの被害に遭わないようにす...
-
PCの寿命は平均3年?:本当で...
-
USBポートのイベントログが大量...
-
住所から直線距離を算出したい...
-
インストールが不要なソフトは...
-
HEVCのファイルの拡張子って何...
-
ソフトが正常に動作しなくなっ...
-
回復ドライブを作成する前にUSB...
-
2つのフォルダ内にある全てのフ...
-
日本語版Windowsで英語のソフト...
-
高速スタートアップは無効にし...
-
パーティションで分ける事によ...
-
メーカー製のノートパソコンに...
-
ソフトはVectorでダウンロード...
-
回復ドライブをUSBメモリで作っ...
-
インストールが必要なソフトと...
おすすめ情報