カンマで区切られたリストに列を変換する
私はこのようなA列の不特定多数の行を取る簡単なExcelシートを作成するタスクを持っています:
1234
123461
123151
11321
そして、ユーザーが簡単にコピーして別のプログラムに貼り付けることができます別のセル内のカンマで区切られたリストにそれらを作成するように:
1234,123461,123151,11321
これを行うための最も簡単な方法は何ですか?
私はこのようなA列の不特定多数の行を取る簡単なExcelシートを作成するタスクを持っています:
1234
123461
123151
11321
そして、ユーザーが簡単にコピーして別のプログラムに貼り付けることができます別のセル内のカンマで区切られたリストにそれらを作成するように:
1234,123461,123151,11321
これを行うための最も簡単な方法は何ですか?
,
で区切られたテキストに変換する必要があるもの)、Ctrl-H(検索&置換)を押します ^p
を入力 ,
を入力 Office 365 Excel をお持ちの場合は、 TEXTJOIN() を使用することができます :
=TEXTJOIN(",",TRUE,A:A)
私は実際にVBAですべての作業を行うモジュールを作成しました。それは、私の範囲のリストを取り、私の選択したセルに出力されるカンマ区切りの文字列を作成します:
Function csvRange(myRange As Range)
Dim csvRangeOutput
Dim entry as variant
For Each entry In myRange
If Not IsEmpty(entry.Value) Then
csvRangeOutput = csvRangeOutput & entry.Value & ","
End If
Next
csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function
だから、私のセルでは、私はちょうど=csvRange(A:A)
を置くと、それは私にカンマ区切りのリストを与えます。
別のアプローチとしては、Excel の列をこのブラウザ内ツールに貼り付けることです: convert.town/column-to-comma-separated-list
テキストの列をカンマで区切られたリストに変換します。
vi または vim を使用して、各行の最後にカンマを置くだけです:
%s/$/,/
このコマンドを説明するには:
%
は、すべての行に対してアクション(すなわち、検索と置換)を行うことを意味します s
は置換を示します /
は引数(すなわち、s/find/replace/options
)を分離します $
は行の終わりを表します ,
はこの場合、置換テキストですこのようなことができます。巨大なスプレッドシートの話をしていない場合、これは'OK'を実行するでしょう…
ここにVBAマクロコードがあります:
Sub generatecsv()
Dim i As Integer
Dim s As String
i = 1
Do Until Cells(i, 1).Value = ""
If (s = "") Then
s = Cells(i, 1).Value
Else
s = s & "," & Cells(i, 1).Value
End If
i = i + 1
Loop
Cells(1, 2).Value = s
End Sub
セルB1のフォーマットを'text'に設定してください。私はあなたが同様にVBAでこれを行うことができると確信していますが、私は現時点でどのようにわからないし、仕事に戻って取得する必要があります。)
Sux2Loseさんの回答は私の好ましい方法ですが、数千行以上の行を扱っている場合はうまくいきませんし、コンピュータがあまり利用可能なメモリを持っていない場合は、さらに少ない行数でも壊れてしまうかもしれません。そして、ワークブックをA1
として保存します。これでcsvは基本的にはテキストエディタで開くことができるプレーンテキストのカンマ区切りリストになります。そうしないと Excel は値の間にカンマを入れることを認識しません。
私はgeneratecsv()サブを改良して、複数のリストを含むエクセルシートを処理するために、各リストのタイトルとリストのタイトルの両方を空行で区切っています。そこで、ルーチンを修正して、以下のようにしました。
私はこのようにしました
不要な列とデータをすべて削除し、.csvファイルとして保存し、Visual Studioのコードエディタを使用して余分なカンマと改行を置き換えました。ホラ