2017-08-21 7 views
0

セルの値が< 7より小さいか、またはセルの値のように、セルの値が特定の範囲にある場合、セルの値(A1:E1など)をG1に連結する式を探しています8と15の間です。特定の範囲にある場合にセルを連結する

私は、次のような式を作成しようとしました。=連結(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-Shiftキーを押しながら入力する代わりに入力して確認する必要があります。

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、(A1 IF:E1 <= 7、A1:E1、""))試してみましたが、私は#NAMEを取得しますか?エラー。 – Max

+0

@Max編集内容を参照してください。画面を更新する必要があります。 –

+0

はい、私はあなたが言ったことをした、あなたの数式が働いた。しかし、この式= TEXTJOIN( "、"、TRUE、IF(2 Max

関連する問題