セルの値をヘッダーと結合し、空白を無視します

セルの値をヘッダーと結合し、空白を無視します

固定行の値と異なる列の値を結合したいのですが、空白セルをスキップします。コードはありますが、機能しません。提案してください

ここに画像の説明を入力してください

Public Function SuperJoin(r1 As Range, r2 As Range, IgnoreBlanks As Boolean) As String
Dim i As Long, j As Long
Dim s As String

j = r2.Cells.Count
For i = 1 To j
  If IgnoreBlanks = True Then
    If r2.Cells(i) = True Then
        If r2.Cells(i).Value <> "" Then s = s & "-" & r2.Cells(i)
    End If
  Else
    If r2.Cells(i) = True Then
        s = s & "-" & r2.Cells(i)
    End If
  End If
Next

i = r1.Count

For j = 1 To i
    SuperJoin = SuperJoin & "----" & r1(1, j) & r2(1, j)
Next j

SuperJoin = Mid(SuperJoin, 5)

End Function

答え1

VBA を使わずに実行したい場合は、この醜い数式で十分です。

=IF(ISBLANK(B5),"",B$1&"-"&B5&", ") &IF(ISBLANK(C5),"",C$1&"-"&C5) &IF(ISBLANK(D5),"", (IF(ISBLANK(C5),D$1&"-"&D5", "&D$1&"-"&D5)))

これは、下のスクリーンショットのセル B12 にあります。残念ながら、数式では常に少なくとも 2 つの列にデータがあることを前提としています。そうでない場合は、E の結果が示すように、不要な が追加されます。(セル B13)

ここに画像の説明を入力してください

関連情報