2017-05-08 67 views
2

如果單元格中的所有單元格都有數據,那麼顯示標題中的值的公式是什麼?該表有很多列。Excel公式:單元格的值列表標題

示例數據:

+----+----+-------+ 
|One |Two |Output | 
+----+----+-------+ 
|data| |One | 
+----+----+-------+ 
| |data|Two | 
+----+----+-------+ 
|data|data|One,Two| 
+----+----+-------+ 
| | |  | 
+----+----+-------+ 
+0

您的Excel版本支持[TEXTJOIN](https://support.office.com/en-us/ article/TEXTJOIN-function-357b449a-ec91-49d0-80c3-0e8fc845691c)的功能? (需要Excel 2016)。如果不是,這將需要VBA。 – tigeravatar

+0

我正在使用Excel for Mac 2011 – jbgroce21

+1

在這種情況下,您需要在VBA(Visual Basic for Applications)中創建一個UDF(用戶定義的函數)。像這樣的東西應該讓你開始:http://stackoverflow.com/questions/22639868/vba-user-defined-function-for-concatenate-if-by-rows – tigeravatar

回答

0

因爲的Excel for Mac 2011中的限制,我無法找到工作,所以我用一個用戶定義函數的公式。

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, _ 
     ConcatenateRange As Range, Optional Separator As String = ",") As Variant 
    Dim i As Long 
    Dim strResult As String 
    On Error GoTo ErrHandler 
    If CriteriaRange.Count <> ConcatenateRange.Count Then 
     ConcatenateIf = CVErr(xlErrRef) 
     Exit Function 
    End If 
    For i = 1 To CriteriaRange.Count 
     If CriteriaRange.Cells(i).Value = Condition Then 
      strResult = strResult & Separator & ConcatenateRange.Cells(i).Value 
     End If 
    Next i 
    If strResult <> "" Then 
     strResult = Mid(strResult, Len(Separator) + 1) 
    End If 
    ConcatenateIf = strResult 
    Exit Function 
ErrHandler: 
    ConcatenateIf = CVErr(xlErrValue) 
End Function 

然後在小區中使用

=ConcatenateIf($A1:$B1, "data", $A$1:$B$1, ",") 

感謝this link

相關問題