2017-08-21 50 views
0

我正在尋找一個公式來將單元格值(比如A1:E1)連接到G1,如果它們處於特定範圍內,例如單元格值小於< 7或單元格值是在8和15之間,等等。連接單元格,如果它們在一定範圍內

我試圖創建一個像這樣的公式:= concatenate(if(A1:E1 < 7,「」))這是不正確的。我在互聯網上也找不到類似的例子。

例子:

A1:1 | B1:2 | C1:3 | D1:5 | E1:50 

Concatenate if A1:E1 is smaller than 7 => Result : G1: (1,2,3,5) 
Concatenate if A1:E1 is between 1 and 7 => Result : G1: (2,3,5) 
Concatenate if A1:E1 is bigger than 10 => Result : G1: (50) 

我怎樣才能做到這一點?謝謝!!

回答

0

使用TEXTJOIN作爲數組公式:

=TEXTJOIN(",",TRUE,IF(A1:E1<=7,A1:E1,"")) 
=TEXTJOIN(",",TRUE,IF((A1:E1<=7)*(A1:E1>1),A1:E1,"")) 
=TEXTJOIN(",",TRUE,IF((A1:E1>=10),A1:E1,"")) 

作爲一個陣列式,它必須與確認Ctrl鍵移輸入,而不是退出編輯模式時輸入。

enter image description here

TEXTJOIN在Office 365引入Excel。如果你沒有,那麼它將需要vba。將以下內容放在附加到工作簿的模塊中,並使用上述公式。

Function TEXTJOIN(delim As String, skipblank As Boolean, arr) 
    Dim d As Long 
    Dim c As Long 
    Dim arr2() 
    Dim t As Long, y As Long 
    t = -1 
    y = -1 
    If TypeName(arr) = "Range" Then 
     arr2 = arr.Value 
    Else 
     arr2 = arr 
    End If 
    On Error Resume Next 
    t = UBound(arr2, 2) 
    y = UBound(arr2, 1) 
    On Error GoTo 0 

    If t >= 0 And y >= 0 Then 
     For c = LBound(arr2, 1) To UBound(arr2, 1) 
      For d = LBound(arr2, 1) To UBound(arr2, 2) 
       If arr2(c, d) <> "" Or Not skipblank Then 
        TEXTJOIN = TEXTJOIN & arr2(c, d) & delim 
       End If 
      Next d 
     Next c 
    Else 
     For c = LBound(arr2) To UBound(arr2) 
      If arr2(c) <> "" Or Not skipblank Then 
       TEXTJOIN = TEXTJOIN & arr2(c) & delim 
      End If 
     Next c 
    End If 
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) 
End Function 
+0

我只是試圖= TEXTJOIN( 「 」TRUE,IF(A1:E1 <= 7,A1:E1,「」)),但我得到#NAME?錯誤。 – Max

+0

@Max查看編輯,您可能需要刷新屏幕。 –

+0

是的,我做了你所說的,你的配方工作。但是當我試過這個公式= TEXTJOIN(「,」,TRUE,IF(2 Max

相關問題