私はそうのようなデータシートを持っている:Excel:すべての一致する値を検索し、コンマ区切りのリストに入れますか?
Col A Col B Col C Column D Col E Column F Col G Col H Col I Col J Col K
1234 Supplier 1
2222 Supplier 2
3333 Supplier 2
4444 Supplier 1
私はまた別のシートに
Home sheet:
Column B
Supplier 1 <-- Values Produced From Index Match Formula
Supplier 2
を持って、私は上の供給者名欄D、データシート、から項目番号のすべてを一覧表示したいですホームシートが一致します。私はVBAでユーザー定義関数を使用して、これをやっている現時点で
Home sheet:
Column B Column C
Supplier 1 1234, 4444
Supplier 2 2222, 3333
:
はしかし、私はそうのようなカンマ区切りリストで、一つのセルに一致する項目番号のすべてを配置します:
Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby20150824
Dim I As Long
Dim xRet As String
For I = 1 To LookupRange.Columns(1).Cells.Count
If LookupRange.Cells(I, 1) = LookupValue Then
If xRet = "" Then
xRet = LookupRange.Cells(I, ColumnNumber) & Char
Else
xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
End If
End If
Next
SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function
そして結果を取得するには、次の式を使用して:
=SingleCellExtract(B14,Data!F:F,-1,",")
ティしかし、私は500行以上のデータを持っており、この方法は計算に約10分以上かかり、時にはシートがクラッシュすることもあります。
誰かが私にこれを行うより良い方法を教えてください。
これは最初のセルでのみ動作するように思われますが、#VALUEエラーを表示する列の下にある他のすべてのセルが表示されます – user7415328
それは私の最後のテストでは問題ありませんが、既存の関数は、ルックアップ列がソースデータの最初の列であることを期待しています。私はルックアップとカラムのパラメータを返す答えを編集しました。この修正された関数は、与えられたデータ構造に対して完全に機能します。 (http://i.imgur.com/TmTea9d.png) – Zerk
私は何をしているのか分かりませんが、それは単に私のためにはうまくいかないでしょう。それは#Valueと言い続ける。私はExcelを再起動しました、私は細胞が計算していることを確認しました。それがあなたのために働くなら、なぜ私にとってはうまくいかないのか分かりません。それが差をつけているなら、私が使っているのはそれだから、Excel 2013を使っていますか? – user7415328