SUMIF関数で、文字列は扱えませんが、前回のVLOOKUP関数を複数対応にする方法をカスタムして、SUMIF関数と同じような動きで文字列を返す関数を作りました。
Excel関連記事
Excel・Wordで値の貼り付けができるショートカットキー
ExcelのTEXT関数で今日の日付から何日後の年月日・曜日を取得する
phpで文字列が数字かどうかを判別するctype_digit
【Excel】重複がある一覧の中から対象のセルを探す方法
【Excel】重複のない一覧の中から、複数の対象のセルを探す方法
【Excel】手入力や関数での、セル内の文章を改行する方法
【Excel】MATCH関数とINDEX関数で、指定範囲内から自由にデータを取り出す
【Excel】SUMIF関数の文字列版を作る方法
【Excel】VLOOKUP関数で、重複する一覧から正しく該当行を検索する
VLOOKUP関数で該当行を取り出す
前回のVLOOKUP関数を複数対応にする方法で重複しない値を作成しました。
あとはそれをどうやって取り出すかです。
方法は2つありますがどちらも若干面倒です。
関数でできないことをやるので仕方ないと割り切りましょう。
また、ある程度、項目の最大数を見積もっておく必要があります。
基本的な考え方は同じで、
「出現順 + 商品コード」で取り出せるのでその数式を作ります。
1.作業シートを使わない方法
単純に1つのセルにひたすら羅列する方法です。
私的には数式が見にくくなるのでおすすめしませんが作業シートが作れない場合はこの方法でしかできませんね。
&+IFERROR(VLOOKUP(2&+”-“&+$A2,Sheet1!$B:$D,3,0)&+”;”,””)
&+IFERROR(VLOOKUP(3&+”-“&+$A2,Sheet1!$B:$D,3,0)&+”;”,””)…
VLOOKUPの検索値を「出現順 + 商品コード」でとりだしますが、出現順は手動で変更になります。
この作業を項目の最大数分繰り返します。
また、VLOOKUPのみでやってしまうとどこかで検索値が見つからなかった場合そのセル自体がエラーを返してしまうので、
IFERROR関数を使って見つからなかった場合は空白にする処理にしています。
2.作業シートを使う方法
基本的に1.の処理と方法は変わりません。ちょっと楽するだけです。
A列に商品コード、
B列に結合結果、
C列の1行目~最大数に出現順をオートフィルタで入力します。
C2のセルに入れる数式は、
あとはオートフィルタで縦横必要な分延ばして全て結合すれば完了です。
この計算式のポイントは、1.の処理で手動で変更していた出現順の部分を数式で
D列~の2行目を引用することで、オートフィルタで簡単に数が増やせることです。
さらにひとつひとつのセルに1個ずつ関数が入力されているので、変更も簡単にできます。
でも面倒な作業がひとつ残っています。それは、計算結果の結合。
CONCATENATE関数で結合するのですが、範囲指定での文字列結合ができません。
なのでひとつずつぽちぽちしながら結合するものを追加する必要があります。
だいぶ力技でしたがSUMIF関数の文字列版を作ることができました!
ebayのFile Exchangeを使う場合は覚えておいて損はないと思います。
コメント