私が持っているのは、個別の列に分割したパーツの説明です。すべての列に見出しがありますが、すべての列にすべてのパーツの情報が含まれているわけではありません。たとえば、サイズ、材料、温度が記載されている列もあれば、サイズと温度のみが記載されている列もあります。空白を無視してそれらを連結する機能があります。連結する各セルの前に、列のヘッダーを参照したい。
望ましい結果:
B6に以下を入力する場合 =ConcatenateRangeValve(G6:J6,",")
これらの結果を見たい。[ITEM]バルブ、[TYPE]ゲート、[DIM]28IN
[ ] 内の項目は行 1:1 にあり、ヘッダーを取得するために使用しているのと同じ列でその行を関数が参照するのに問題があります。必要なのは、作業中のセルがスプレッドシート全体のどこにあるかを特定することだと思います。これを行うには、C を定義し、その値を範囲内の最初のセルの列番号として設定し、ループを通過するときに 1 ずつ増やします。私はそれを働かせることができません。他のすべての部分は問題ありません。下記参照:
Function ConcatenateRangeValve(ByVal cell_range As Range, _
Optional ByVal seperator As String) As String
Dim newString As String
Dim cellArray As Variant
Dim i As Long, j As Long
Dim C As Long
cellArray = cell_range.Value
With Range("cell_range")
C = .Column
End With
For i = 1 To UBound(cellArray, 1)
For j = 1 To UBound(cellArray, 2)
If Len(cellArray(i, j)) <> 0 Then
newString = newString & (seperator & "[" & cells(1, C) & "]")
newString = newString & (cellArray(i, j))
End If
C = C + 1
Next
Next
If Len(newString) <> 0 Then
newString = Right$(newString, (Len(newString) - Len(seperator)))
End If
ConcatenateRangeValve = newString
End Function
皆さんが提供できる助けを前もって感謝します。