- ベストアンサー
表引き関数の問題:重複する数値の表引きがうまくできない
- 質問者は、表引き関数(VLOOKUP関数)を使用している際に問題が発生しています。通常、B列が通し番号である場合、C列のランダムな数値とD列の値に対して表引きが正常に機能します。しかし、B列がランダムな数値であり、C列が通し番号である場合、同じ数値が複数存在すると、表引きの結果は最初の数値のみになってしまいます。質問者は、重複する数値に対しても表引きを行いたいと考えています。
- 質問者は、他の関数と組み合わせることでこの問題を解決できるのかを尋ねています。この問題に対する解決策を提案するためには、具体的なデータや条件を把握する必要があります。
- 回答者は、現在の問題の詳細な設定やデータ構造について具体的な例を提供し、他の関数や手法を使用して解決策を提案することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 VBAをマスターする必要はないと思います。 そこまでやらないと、質問者さんのやりたいことはできないということです。 ・「ワークシート関数だけではできないから」とあきらめる方法が1つ ・ワークシート関数だけでできる限りやる方法が1つ 1つ目、2つ目というようにゼロが返るまで該当するものを返す列を用意します。 もちろん、何個該当するか分からないので、その分だけ列を設け、例外が発生したら列を増やします。 「配列数式」というものを理解していただく必要があります。 キーワード検索でいくつもでてきます。 E1には=MIN(IF($B$1:$B$6=$D1,$C$1:$C$6)) F1には=MIN(IF($B$1:$B$6=$D1,IF($C$1:$C$6>IF(E1=0,999999,E1),$C$1:$C$6))) G列以降はF1のコピー ・VBA関数を使う VBAを説明する気はありませんが、VBA関数がどうやって動くのかをイメージするためだけに以下の手順を紹介します。 1) Alt+F11でVisual Basic Editorを開きます。 2) 「挿入」-「標準モジュール」 3) 追加されたシートに「Function ~End Function」まで丸ごと貼る 4) Excelブックを保存する 5) E1セルに「=MultiLookup(D1,B1:C6,2)」と打ってみる ※マクロが動かないセキュリティ設定になっていたら「有効にする」必要があります
その他の回答 (1)
- jamshid6
- ベストアンサー率88% (591/669)
該当するものを複数見つけられたとしても、それを「1と6」のようにまとめて表示させる「関数」がExcelにはありません。 (参考)範囲指定の文字列結合に関する過去の質問 http://okwave.jp/qa3853243.html 「重複してもが最大3つ」とか分かっていれば、それだけ列を用意しておいて、それぞれ検索させればいいのですが、 いくつ重複するか分からないのであれば、関数だけでは対応できません。 だから、VBAで関数を作るしかないと思います。 以下のものを標準モジュールに貼れば、そのブックでは「=MultiLookup(D1,B1:C6,2)」という風に複数あったら 複数表示できるワークシート関数が使えるようにります。 Function MultiLookup(objSrch As Range, objRange As Range, intRetCol As Integer) As String Dim obj As Range Dim strRet As String For Each obj In objRange.Columns(1).Cells If obj.Text = objSrch.Text Then strRet = strRet & IIf(strRet = "", "", "と") & obj.Offset(0, intRetCol - 1).Text End If Next MultiLookup = strRet End Function
補足
回答ありがとうございます やっぱり エクセルでは とは思っていましたが やはりね 書いていただいた 標準モジュールも わかりません VBAはまったくわかりません 何から やったらいいでしょうかね
お礼
再度の回答ありがとうございます この手順で やってみます めんどくさがりやですので 関数はありがたいです 必要なものだけ つまみぐい するほうで 関数も今いるものだけ これがいけないのでしょう こうできれば早いとおもうことが 今後出てくるときに 対応できないのも また めんどうですので がんばってみます いろいろありがとうございました