1

巨大な(〜950変数)調査回答スプレッドシートがあります。各項目の個々の回答オプションが別々の列に報告されるため、必要なサイズの2〜4倍になります。たとえば、質問2がセルA1にあり、3つの応答オプションがある場合、これらはセルA2-C2、A3-C3などの質問の下に一覧表示されます。注:A2-C2などの1つだけにデータが入力されます。各観察。

スプレッドシートを手動で調べて、次のようなコードを使用してA2-C2を連結できることは明らかです。

=CONCATENATE(IF(ISBLANK(A4),"",A4),IF(ISBLANK(B4),"",B4),IF(ISBLANK(C4),"",C4))

ただし、上記では、コードを手動で変更し(質問には、2〜6の応答オプションがあります)、960個の変数のそれぞれのすべての観測値を個別にコピー/貼り付けする必要があります。老後が亡くなる前にこれを終わらせたいので、上記のプロセスを自動化する方法が欲しいです。

各変数の最後の応答オプションの後に識別子列(データはありませんが、明らかな最初の行名があります)を調べて挿入するのは簡単です。これにより、コードは連結するデータの検索を開始する場所を知ることができます。コードは、以前に連結された結果に到達するたびに停止し、次の列で現在の連結を開始することを知っている必要があります。特定の行に到達すると(たとえば、60?私は55までの観測値しかありません)、次の識別子列を探してプロセスを繰り返すことができます。

どんなアイデアでも歓迎です。

データに余分なスペースがないように(将来の分析を支援するために)空白をチェックする必要があります。

うまくいけば、以下は状況をさらに明確にするでしょう。あなたは以前のコメントで正しいです。各質問の後に55行の観測値が続きます。例えば:

 | |   Q1   |         |        ||   Q2    |        || 
 |-|--------|---------|--------||---------|--------||
 |1|   1    |         |        ||         |    2   ||
 |2|        |    2    |        ||         |    2   ||
 |3|        |         |    3   ||         |    2   ||
 |4|        |    2    |        ||    1    |        ||
 |5|        |         |    3   ||         |        ||
 |6|   1    |         |        ||         |    2   ||
 |7|   1    |         |        ||    1    |        ||
 |8|        |         |    3   ||    1    |        ||
 |9|        |    2    |        ||         |    2   ||

現在、各質問の最後の回答オプションの後に空白の列はありませんが、(最初の投稿で述べたように)簡単に1つ入れることができます。

4

6 に答える 6

1

レイアウトを100%理解できるかどうかはわかりませんが、次のように&を使用すると、連結を大幅に簡略化できます。

=A4&B4&C4

これはコードと同じ効果があり、空白セルのチェックは必要ありません。

情報が利用可能になり次第、残りの質問に取り組みます。

編集:これが私の解決策です。質問は行1にあり、最初の観測セットは行2にあると想定しているため、最後の観測セットは行56に分類されます。

  1. セルA58に数字の1を入力します
  2. 式:= IF(ISBLANK(B1)、A58、A58 + 1)をセルB58に配置します
  3. すべての質問にこの式を正しく記入してください
  4. セルA59に、数式= MATCH(COLUMN()、58:58,0)を入力します
  5. セルA60に、数式= MATCH(COLUMN()、58:58,1)を入力します
  6. セルA61に、数式= INDEX(1:1、、A59)を入力します
  7. これらの3つの数式すべてを17個のセルに正しく入力します(17個の質問があると仮定します)
  8. セルA62に、数式= SUM(INDIRECT(ADDRESS(ROW(A2)、A $ 59)& ":"&ADDRESS(ROW(A2)、A $ 60)))を入力します。
  9. この数式を17セルに入力し、55セルに入力します。

3つの質問を検索する方法は次のとおりです。

       |  A  |  B  |  C  |  D  |  E  |  F  |  G  |
  |----|------------------------------------------
  |  1 | Qn1               Qn2         Qn3        
  |  2 |  1                       2     1         
  |  3 |        2                 2           2   
  | .. |
  | 58 |  1     1     1     2     2     3     3
  | 59 |  1     4     6
  | 60 |  3     5     8
  | 61 | Qn1   Qn2   Qn3
  | 62 |  1     2     1
  | 63 |  2     2     2
于 2009-02-20T17:17:31.857 に答える
0

情報をありがとう。方法とは別に、連結に&文字を使用することもできるため、= concatenate(B1、”“、C1、”“、D1)の代わりに、= B1&””&C1&””&D1を使用できます。

于 2009-04-13T05:46:08.900 に答える
0

古い投稿ですが、セルを連結するためにこの関数を作成しました。SUMIF と同様に機能します。

Function CONCIF(rng As Range, criteria As Range, sums As Range)
'Function to concatenate a range of cells if the chosen adjacent cells matches
'the criteria.
'To use:
'  Copy and Paste this into a module in VB Editor
'  In a cell type =CONCIF(rng, criteria, sums) where:
'       rng is the range of cells to match the criteria
'       criteria is the value you would to match
'       sums is the range of cells to concatenate if criteria matches
'  To change what is put between the concatenations, edit the " / " below and put
'  whatever you would like in between the quotes.
'  Enjoy! -RP

Dim rCell As Range
Dim concat As String
Dim dist As Integer

dist = sums.Column - rng.Column
concat = ""

For Each rCell In rng
    If rCell = criteria Then
        If concat = "" Then
            concat = rCell.Offset(0, dist).Value
        Else
            concat = concat & " / " & rCell.Offset(0, dist).Value
        End If
    End If
Next rCell

CONCIF = concat
End Function
于 2011-09-28T19:02:45.987 に答える
0

または、水平方向の範囲を選択して空白以外のセルを連結する簡単な方法が必要な場合は、次のようにします。

Function CONCIF(rng As Range)

Dim rCell As Range
Dim concat As String
Dim dist As Integer

dist = 0
concat = ""

For Each rCell In rng
    If rCell.Value <> "" Then
        If concat = "" Then
            concat = rCell.Value
        Else
        concat = concat & ", " & rCell.Value
        End If
    End If
Next rCell

CONCIF = concat
End Function
于 2014-04-10T16:35:56.653 に答える
0

@EJames:例をグラフィカルにレイアウトするための提案とポインタをありがとう。データに余分なスペースがないように、空白をチェックする必要があります (将来の分析を支援するため)。

以下が状況をさらに明確にすることを願っています。あなたの以前のコメントは正しいです。各質問の後に、55 行の観測が続きます。例えば:

 | |   Q1   |         |        ||   Q2    |        || 
 |-|--------|---------|--------||---------|--------||
 |1|   1    |         |        ||         |    2   ||
 |2|        |    2    |        ||         |    2   ||
 |3|        |         |    3   ||         |    2   ||
 |4|        |    2    |        ||    1    |        ||
 |5|        |         |    3   ||         |        ||
 |6|   1    |         |        ||         |    2   ||
 |7|   1    |         |        ||    1    |        ||
 |8|        |         |    3   ||    1    |        ||
 |9|        |    2    |        ||         |    2   ||

現在、各質問の最後の回答オプションの後に空白の列はありませんが、(最初の投稿で述べたように) 簡単に挿入できます。

とても感謝しております。

于 2009-02-20T20:57:59.953 に答える