Excel 値に基づいて文字列を作成する

Excel 値に基づいて文字列を作成する

次のような問題に直面しています:

製品の原産地を表す 11 列があります。製品は 1 つの原産地から取られることもあれば、2 つの原産地から取られることもあります。列には、その原産地がどれだけ使用されているかの割合に対応する値があります。例 (例を簡単にするために 4 つの原産地のみを使用):

NTH LGL MSV NIE

{1   0   0   0;

0.5  0   0.5 0; 

0    1   0   0;}

必要な結果は、最初の行が NTH、2 番目の行が NTH-MSV、3 番目の行が LGL です。

次の数式を使用しようとしましたが、Excel で空のセルを連結したりエラーを連結したりできません。

=CONCATENATE(IFERROR(OFFSET(AP1;0;IF(AQ4:BA4>0;COLUMN(AQ4:BA4)-COLUMN(AP4);""));""))

AQ1 から BA1 には製品の原産地が含まれ、その下の列には値 (0 から 1 の範囲) が含まれます。

答え1

説明に従って、次のカスタム関数を試してください。

Function HEADERFOROVERZERO(rng As Range)
Dim rngCell, returnString: returnString = ""
For Each rngCell In rng
    If (IsNumeric(rngCell.Value)) Then
        If (rngCell.Value > 0) Then
            returnString = returnString & Cells(1, rngCell.Column).Value & "-"
        End If
    End If
Next
If (Len(returnString) > 1) Then
    returnString = Left(returnString, Len(returnString) - 1)
End If
HEADERFOROVERZERO = returnString
End Function

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

関連情報