- ベストアンサー
エクセルデータの紐付について
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
前提として、 ・A列・B列ならびにD列には入力済み ・E~H列を、自動的に求める とします。 作業用として、C列を使います。 C2に、 =A2&MAX(COUNTIF($A$2:A2,A2)) 下へコピー。 H2に、 =COUNTIF($A$2:$A$16,D2) E2に、 =IF($H2>=1,INDEX($B$2:$C$16,MATCH($D2&1,$C$2:$C$16,0),1),"") F2に、 =IF($H2>=2,INDEX($B$2:$C$16,MATCH($D2&2,$C$2:$C$16,0),1),"") G2に、 =IF($H2>=3,INDEX($B$2:$C$16,MATCH($D2&3,$C$2:$C$16,0),1),"") それぞれを、下へコピー。 ※C列が目障りであれば、 ・非表示 ・文字の色を白にする などで目立たなくなると思います。
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例です。 ↓の画像のように作業用の列を設けます。 これはE列に重複しないようにA列データを表示するためです。 すでにE列データが入力済みであれば必要ありません。 作業列C2セルに =IF(COUNTIF(A$2:A2,A2)=1,ROW(),"") という数式を入れオートフィルでしっかり下へコピーしておきます。 そしてE2セルに =IF(COUNT(C:C)<ROW(A1),"",INDEX(A:A,SMALL(C:C,ROW(A1)))) F2セルに =IF(OR($E2="",COUNTIF($A:$A,$E2)<COLUMN(A1)),"",INDEX($B$1:$B$1000,SMALL(IF($A$1:$A$1000=$E2,ROW($A$1:$A$1000)),COLUMN(A1)))) これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をコピー → F2セルを選択 → 数式バーで一度クリック → 貼り付け → そのまま(編集可能のまま)Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをH2セルまでオートフィルでコピー I2セルは =IF(E2="","",COUNTIF(A:A,E2)) というすうしきを入れ、最後にE2~I2セルを範囲指定 → I2セルのフィルハンドルで 下へコピーすると、画像のような感じになります。 ※ データ量が極端に多い場合はもう1列作業用の列を設ければ 配列数式を使わないで対応できると思います。m(_ _)m
C列は事前に入力しておく (例えば、[フィルタオプションの設定]でA列の無重複データを得る]) セル E2 に次の[条件付き書式]を設定 数式が =ISERROR(E2) フォント色 白 セル F2 に次の配列数式を入力して、此れを右方にズズーッとドラッグ&ペースト {=INDEX($B$2:$B$16,SMALL(IF($A$2:$A$16=$D2,ROW($A$2:$A$16)-1,""),COLUMN(A1)))} セル H2 に配列数式 {=COUNT(CODE(E2:G2))} を入力 範囲 E2:H2 を下方にズズーッとドラッグ&ペースト
補足
ありがとうございます。 初心者なもので… C列の処理がいまいち分かりません。 すみません(汗
- KURUMITO
- ベストアンサー率42% (1835/4283)
SUMPRODUCT関数などを使いますと計算に負担がかかります。分かり明日くデータが多くなっても対応できる方法は作業列を作って対応する方法です。 C2セルに次の式を入力して下方にドラッグコピーします。 =IF(COUNTIF(C$1:C1,A2&B2)=0,A2&B2,"") 上の式ではもしも同じ組み合わせが複数入力されている場合には最初の組み合わせのみを表示します。 H2セルには次の式を入力して下方にドラッグコピーします。 =IF(D2="","",COUNTIF(C:C,D2&E2)+COUNTIF(C:C,D2&F2)+COUNTIF(C:C,D2&G2))
補足
ありがとうございます。 最初の文字は出てくるのですが 2番目、3番目の重複している字が出てきません。 どうしたらよいのでしょうか?
お礼
こんにちは!! 出来ました!!! ありがとうございます <(_ _*)>