- ベストアンサー
氏名番号をマッチさせる方法
- Excelを使用して、B列の氏名番号をD列の番号にマッチさせ、結果をE列に表示する方法について質問しています。
- 現在A列にはB列氏名の先頭2文字の番号を入力し、オートフィルを使用してA11まで入力しています。E列には式-2を入力し、オートフィルを使用してE11まで入力しています。
- しかし、4番後藤と6番清原の氏名番号が入力されず、E4とE8のセルは空白になっています。これらの空白セルに番号違いでも強制的に入力し、全員の氏名を収めたいと考えています。関数の追記や訂正、またはVBA関数の解決策を求めています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VLOOKUP関数で抽出しようとしていることが誤りです。 A列の番号と行番号の合成値を使って小さい順にB列の氏名を抽出する方法がベターではないでしょうか? E2=INDEX(B:B,MOD(SMALL(INDEX(A$2:A$11*1000+ROW(A$2:A$11),0),D2),1000)) E2セルを下へE11までオートフィルコピーすれば目的通りになります。
その他の回答 (3)
- msMike
- ベストアンサー率20% (364/1805)
[No.2補足]へのコメント、 》 配列数式は{}で囲むではないのでしょうか 違います! 式は必ず配列数式として入力のこと、の意味 此処では式を例えば =SUM((A1:A10)*(B1:B10)) としておく 1.該当式をコピーして指定のセルに入力(でも、まだ Enterキー  ̄ ̄を叩かない!) 2.Ctrl+Shift+Enter を「エイヤッ!」と叩き付け 3.[数式バー]を眺めて、下記のように、入力した式が { }で囲  ̄ ̄まれていることを確認  ̄ ̄ {=SUM((A1:A10)*(B1:B10))} ←配列数式! つまり、入力する貴方が{ }で囲むのではなく、ステップ2を実行すると自動的に{ }で囲まれる、ということです。
- msMike
- ベストアンサー率20% (364/1805)
1.次の各セルにその右に示す式を入力  ̄ ̄ G2: =COUNTIF(A$2:A2,A2)  ̄ ̄ H2: =VLOOKUP(D2,A$2:B$11,2,FALSE)  ̄ ̄ I2: =COUNTIF(H$2:H2,#N/A) 2.範囲 G2:I2 を下方にオートフィル 3.次式を入力したセル E2 を下方にオートフィル  ̄ ̄ =IFERROR(H2,INDEX(B$1:B$11,SMALL(IF(G$2:G$11>1,ROW(A$2:A$11),""),I2)))  ̄ ̄【お断り】上式は必ず配列数式として入力のこと
お礼
有難うございます。
補足
有難うございます。上記の式を入力してG,H,I列は上図のようになったのですがE列に配列数式{=IFERROR(H2,INDEX(B$1:B$11,SMALL(IF(G$2:G$11>1,ROW(A$2:A$11),""),I2)))}を入力してもE列すべて#NAME?となります。配列数式は{}で囲むではないのでしょうか。また現在パソコン環境がOffice 2003だからでしょうか。すみませんが宜しくお願いします。
- aokii
- ベストアンサー率23% (5210/22062)
関数は正しいようです。 先頭2文字の番号は同じ番号にならないようにしてみてはいかがでしょう。
お礼
ご回答有難うございます。
補足
有難うございます。グループごとに氏名番号が与えられておりグループ別に同番号があります。今回の枠内に氏名を入れるのは各グループ混合チームとなりますので同番号が発生します。番号を変えれば問題ないのですがそれができない状況となってます。誠に恐れ入ります。
お礼
コメント回答も有難うございます。勉強になりました。