29

Excelに数百のセルがあり、1つの文字列に連結したいと思います。それらを入力するために手動でそれらを1つずつ調べるよりも簡単な方法はありCONCATENATE(A1, A2, ....)ますか?

CONCATENATE(A1:A255)動作しません。

4

12 に答える 12

34

*新しいタブで、セルA1にA1と入力します。

*セルA2にA2と入力します

*塗りつぶしシリーズを使用して列Aの値を完成させます

*セルB1にA1と入力します

  • セルB2でこのフォーラムを使用する

    = B1& "、"&A2

  • 数式をコピーします。

値をコピーして貼り付け、作成した値の文字列を収集します。

A1  A1
A2  A1,A2
A3  A1,A2,A3
A4  A1,A2,A3,A4
A5  A1,A2,A3,A4,A5
A6  A1,A2,A3,A4,A5,A6
A7  A1,A2,A3,A4,A5,A6,A7
A8  A1,A2,A3,A4,A5,A6,A7,A8
A9  A1,A2,A3,A4,A5,A6,A7,A8,A9
A10 A1,A2,A3,A4,A5,A6,A7,A8,A9,A10
于 2013-02-28T20:25:18.843 に答える
13

を押しAlt-F11、新しいモジュールを挿入し、以下のコードを貼り付けます。

Public Function concatRange(data As Range, Optional sep As String = "") As String
    Dim ret As String
    Dim sep2 As String
    ret = ""
    sep2 = ""

    For Each cell In data
        ret = ret & sep2 & cell.Value
        sep2 = sep
    Next cell

    concatRange = ret
End Function

使用法:

=concatRange(A8:D11;", ")    'OS with ; list separator
=concatRange(A8:D11,", ")    'OS with , list separator or in a macro code

また

=concatRange(A8:D11)
于 2015-04-10T11:29:43.530 に答える
8

こちらのブログ投稿をご覧ください:http ://www.dullsharpness.com/2011/11/14/excel-vba-range-to-csv-range2csv-function/

たとえば、パイプ区切り文字を使用して、このように使用できます。

=Range2Csv(A1:A255,"|")

を使用してVBAエディタにアクセスAlt+F11し、モジュールにドロップします。

コードの抜粋はここにあります:

Option Explicit
'**********************************************
'* PURPOSE: Concatenates range contents into a
'*          delimited text string
'*
'* FUNCTION SIGNATURE: Range2Csv(Range, String)
'*
'* PARAMETERS:
'*    Range  - the range of cells whose contents
'*             will be included in the CSV result
'*    String - delimiter used to separate values
'*             (Optional, defaults to a comma)
'*
'* AUTHOR: www.dullsharpness.com
'*
'* NOTES: [add'l notes removed for brevity]
'*
'**********************************************
Public Function Range2Csv(inputRange As Range, Optional delimiter As String)
  Dim concattedList As String 'holder for the concatted CSVs
  Dim rangeCell As Range      'holder cell used in For-Each loop
  Dim rangeText As String     'holder for rangeCell's text

  'default to a comma delimiter if none is provided
  If delimiter = "" Then delimiter = ","

  concattedList = ""          'start with an empty string

  'Loop through each cell in the range to append valid contents
  For Each rangeCell In inputRange.Cells

    rangeText = rangeCell.Value 'capture the working value

    'Only operate on non-blank cells (i.e. Length > 0)
    If Len(rangeText) > 0 Then
      'Strip any delimiters contained w/in the value itself
      rangeText = WorksheetFunction.Substitute(rangeText, delimiter, "")

      If (Len(concattedList) > 0) Then
        'prepend a delimiter to the new value if we
        'already have some list items
        concattedList = concattedList + delimiter + rangeText
      Else
        'else if the list is blank so far,
        'just set the first value
        concattedList = rangeText
      End If
    End If

  Next rangeCell

  'Set the return value
  Range2Csv = concattedList

End Function
于 2013-02-28T20:43:16.877 に答える
6

concatenate(a1、a2、a3、a4、a5、a6、a7、a8、a9、a10、a11、a12、a13、a14、a15、a16、a17、a18、a19、a20、a21、a22、a23、a24、 a25、a26、a27、a28、a29、a30、a31、a32、a33、a34、a35、a36、a37、a38、a39、a40、a41、a42、a43、a44、a45、a46、a47、a48、a49、 a50、a51、a52、a53、a54、a55、a56、a57、a58、a59、a60、a61、a62、a63、a64、a65、a66、a67、a68、a69、a70、a71、a72、a73、a74、 a75、a76、a77、a78、a79、a80、a81、a82、a83、a84、a85、a86、a87、a88、a89、a90、a91、a92、a93、a94、a95、a96、a97、a98、a99、 a100、a101、a102、a103、a104、a105、a106、a107、a108、a109、a110、a111、a112、a113、a114、a115、a116、a117、a118、a119、a120、a121、a122、a123、a124、 a125、a126、a127、a128、a129、a130、a131、a132、a133、a134、a135、a136、a137、a138、a139、a140、a141、a142、a143、a144、a145、a146、a147、a148、a149、 a150、a151、a152、a153、a154、a155、a156、a157、a158、a159、a160、a161、a162、a163、a164、a165、a166、a167、a168、a169、a170、a171、a172、a173、a174、a175、a176、a177、a178、a179、a180、a181、a182、a183、a184、 a185、a186、a187、a188、a189、a190、a191、a192、a193、a194、a195、a196、a197、a198、a199、a200、a201、a202、a203、a204、a205、a206、a207、a208、a209、 a210、a211、a212、a213、a214、a215、a216、a217、a218、a219、a220、a221、a222、a223、a224、a225、a226、a227、a228、a229、a230、a231、a232、a233、a234、 a235、a236、a237、a238、a239、a240、a241、a242、a243、a244、a245、a246、a247、a248、a249、a250、a251、a252、a253、a254、a255)a207、a208、a209、a210、a211、a212、a213、a214、a215、a216、a217、a218、a219、a220、a221、a222、a223、a224、a225、a226、a227、a228、a229、a230、a231、 a232、a233、a234、a235、a236、a237、a238、a239、a240、a241、a242、a243、a244、a245、a246、a247、a248、a249、a250、a251、a252、a253、a254、a255)a207、a208、a209、a210、a211、a212、a213、a214、a215、a216、a217、a218、a219、a220、a221、a222、a223、a224、a225、a226、a227、a228、a229、a230、a231、 a232、a233、a234、a235、a236、a237、a238、a239、a240、a241、a242、a243、a244、a245、a246、a247、a248、a249、a250、a251、a252、a253、a254、a255)

PowerShellそれ!

"concatenate(a$((1..255) -join ', a'))" | clip

テキストファイルを開いてコピーして貼り付けます

「セルをすばやく選択するには、Ctrlキーを押しながら、連結関数に含めるセルをクリックします。たとえば、セルを選択します。タイプ= concatenate(数式バーでCTRLボタンを押したまま、含めるセルをクリックします。CTRLボタンを離します。数式バーに)と入力し、Enterキーを押します。

于 2013-02-28T20:26:53.030 に答える
3

このVBA関数は、必要に応じてオプションの区切り文字を使用して、セルの内容を連結します。標準モジュールにコピーします。

  Option Explicit

  Function Concat(CellRange As Range, Optional Delimiter As String) As String 
 ' this function will concatenate a range of cells and return the result as a single string
 ' useful when you have a large range of cells that you need to concatenate
 ' source: http://chandoo.org/wp/2008/05/28/how-to-add-a-range-of-cells-in-excel-concat/

  Dim retVal As String, dlm As String, cell As Range
  retVal = ""
  If Delimiter = Null Then
      dlm = ""
  Else
    dlm = Delimiter
  End If
  For Each cell In CellRange
      If CStr(cell.Value) <> "" And CStr(cell.Value) <> " " Then
          retVal = retVal & CStr(cell.Value) & dlm
      End If
  Next
  If dlm <> "" Then
      retVal = Left(retVal, Len(retVal) - Len(dlm))
  End If
  Concat = retVal
End Function
于 2013-02-28T20:19:10.877 に答える
2

純粋なExcelアプローチ(つまりVBAなし)を探している場合は、JamesJenkinsによって提案された方法が最適です。VBAの使用に満足している場合は、VBAエディターを開き、新しいモジュールを追加して、次のコードを追加します。

Option Explicit

Public Function JoinText(cells As Variant,Optional delim_str As String) As String
    If cells.Columns.count < cells.Rows.count Then
       JoinText = Join(WorksheetFunction.Transpose(cells), delim_str)
    Else
       JoinText = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(cells)), delim_str)
    End If
End Function

VBAエディタを簡単に開くには、Alt-F11を押します。モジュールを挿入するには、「プロジェクト」ウィンドウにリストされているワークブックを右クリックします。

この関数は、次のようにExcelから呼び出されます。

=JoinText(A1:C1)

区切り文字(コンマなど)を追加する場合:

=JoinText(A1:C1,",")

転置関数を使用する目的は、2次元配列「セル」を1次元配列に変換することです。これの理由は、VBA関数Joinが1d配列のみを受け入れることです。それらのうちの2つを使用する理由は、JoinTextがセルの行(まだ2d配列)を調べている場合、最初の転置呼び出しでこの2d行配列を2d列配列に転置し、2番目の呼び出しで次のように変換するためです。 1d配列。

于 2013-11-28T17:07:34.907 に答える
2

私の好みの方法は、正規表現を許可するエディターに値をカットアンドペーストしてから、タブ(またはスペース)を検索して削除し、現在の選択を置き換えることです。

これを使用して、コンマや空白など、必要なものを挿入することもできます。

タイピングよりも1トン速い=concatenate(A1,",","A2",",",......)

于 2013-12-02T20:11:03.050 に答える
1

純粋にExcelではありませんが、Wordでこれを行う簡単な方法があります。

  1. 連結するセルを選択し、それらをコピーしてWordに貼り付けます。これにより、テーブルが作成されます。
  2. テーブル全体を選択します。
  3. 表をテキストに変換します。段落マーク(またはテキストに表示されない他の何か)を区切り文字として使用します。
  4. すべてのテキストを選択します。
  5. 段落マークを削除するには、[置換]を使用します。([検索する文字列]ボックスに^ pと入力します。[置換]ボックスは空のままにします。)
于 2014-03-12T17:26:59.623 に答える
1

Excel 2016を使用している場合は、配列数式を使用できます。

入る

= concat(a1:a255)

セルに入れて、を押します

[ctrl] + [shift] + [enter]

于 2016-07-29T14:38:42.400 に答える
0

連結したい値は、シートの行2、列3から始まります。

Sub GOWN()
roww = 2
Do While cells(roww, 2) <> ""
    aa = cells(roww, 3)
    dd = dd & aa & ","
    roww = roww + 1
Loop
cells(roww + 1, 3) = dd
End Sub
于 2015-02-19T19:02:25.767 に答える
0

このサイトから恥知らずにコピー:

  1. 結果が必要なセルを選択します。
  2. 数式バーに移動して、次のように入力します... "= A1:A5"
  3. 数式全体を選択し、F9キーを押します(これにより、数式が値に変換されます)。
  4. 両端から中括弧を取り外します。
  5. = CONCATENATE(をテキストの先頭に追加し、丸かっこで終了します)。
  6. Enterキーを押します。

ここで特に注目すべきは、数式を編集するときにF9キーを押すと、数式がその数式の結果に置き換えられることです。それが範囲である場合、それはその範囲の内容のリストに置き換えられます。

于 2017-08-22T10:23:50.320 に答える
-1

デリミネーターを1つの連結に追加するだけです。

=concatenate(A1, ",")

次に、すべての連結をコピーして、値として貼り付けます。次に、それらの値をコピーして、転置して貼り付けます。次に、転置された値をコピーして、ワードエディタに貼り付けます。デリミネータと値の前のスペースを検索し、デリミネータだけを置き換えます。これにより、デリミネーターを使用してすべての値の連結文字列が得られます。これは他のオプションよりもはるかに簡単です。

于 2015-07-26T15:06:19.693 に答える