2016-08-31 6 views
0

各行で「はい」を検索する式を取得しようとしています。次に、列名を列挙する必要があります。行の中には1つしかないものもあれば、3つ以上あるものもあります。私はいくつかの提案の検索と編集を試みましたが、必要なものを手に入れることはできません。いくつかの公式は私にランダムな列名を与え、1つだけです。複数の列名を返すExcel式

私はあなたがそのような何か試すことができると思い
Header 1 Header 2 Header 3 Header 4 List 
    No   Yes  Yes   No  Header 2, Header 3 
Yes   No  Yes   Yes  Header 1, Header 3, Header 4 
    No   No   No   Yes  Header 4 
Yes   Yes   No   Yes  Header 1, Header 2, Header 4 
+0

どのExcelをお使いですか? –

+0

Office 365 Excelをお持ちでない場合は、以下をご覧ください。http://stackoverflow.com/questions/36572697/udf-to-concatenate-values TEXTJOIN()を調べると、 –

+0

それは2013年です、あなたがリンクしている最初のものはまさに私が望んでいる最終結果です、私はその笑でさらに悪いので、コーディングを使用しないことを望んでいた、私は今それを試してみます – Adrienne

答えて

0

次のUDFを使用することができます。

Function TEXTJOIN(delimiter As String, ignore_empty As String, rng) As String 
    Dim i As Long 
    Dim textn() As Variant 
    textn = rng 
    For i = LBound(textn) To UBound(textn) 
     If Len(textn(i)) = 0 Then 
      If Not ignore_empty = True Then 
       TEXTJOIN = TEXTJOIN & textn(i) & delimiter 
      End If 
     Else 
      TEXTJOIN = TEXTJOIN & textn(i) & delimiter 
     End If 
    Next 
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - 1) 
End Function 

は、ワークシートに取り付けたモジュールでそれを入れてください。

その後、次の配列数式を持つ他の式のようにそれを呼び出します。

=TEXTJOIN(",",TRUE,IF(A2:D2="Yes",$A$1:$D$1,"")) 

は、それが編集モードを終了するときはCtrl-Shiftキーを押しながら入力する代わりに入力して確認する必要が配列であること。正しく実行された場合、Excelは{}を数式の周りに置きます。

enter image description here

あなたが唯一の4を持っているので、数式が、これは、同じものを返すかどうとそれを得るために。あなたが4つ以上あるなら、これはかなり長くなるでしょう。

=LEFT(IF(A2="Yes",$A$1 & ",","") & IF(B2="Yes",$B$1 & ",","") & IF(C2="Yes",$C$1 & ",","") & IF(D2="Yes",$D$1 & ",",""),LEN(IF(A2="Yes",$A$1 & ",","") & IF(B2="Yes",$B$1 & ",","") & IF(C2="Yes",$C$1 & ",","") & IF(D2="Yes",$D$1 & ",",""))-1) 

enter image description here

+0

あなたがちょうど与えたそのUDFは、まさに私が必要としていた素晴らしい作品です。ありがとうございました! – Adrienne

0

:セルの文字列は、それ以外の場合はそうであるならば、書かれた文字列は、ヘッダーで、「はい」に対応する場合それはテストします

=(IF(EXACT(A2;"Yes");A1 & ", ";"")) & (IF(EXACT(B2;"Yes");B1 & ", ";"")) & (IF(EXACT(C2;"Yes");C1 & ", ";"")) & (IF(EXACT(D2;"Yes");D1 & ", ";"")) 

を書き込まれる文字列は ""です。 私はまた、他の3つのIF条件を&シンボルと連結しました。あなたは正確に何をしたい得るためにそれを改善することができ

header 2, header 3, 

私の事:あなたの配列の最初の行に、この式を適用する

は、次の結果を返します。

0

UDFの必要はありません

使用

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(A2="Yes",A$1&", ","")&IF(B2="Yes",B$1&", ","")&IF(C2="Yes",C$1&", ","")&IF(D2="Yes",D$1&", ",""),", H","-H"),", ",""),"-H",", H") 

SUBSTITUTE sがいる場合にのみ、末尾の", "を除去する(多分やり過ぎ)方法です必要です。 必要な数の行をコピーします。

私は明示的にそれぞれを書くことなく任意の数の列に対して機能する配列式を書くことを意図しましたが、明らかにCONCATENATEは配列式では機能しません。