2017-10-10 8 views
-1

スプレッドシートでは、各セル内の改行が尊重されるABABフォーム内のセル内のコンテンツをマージする必要があります。私は1000sのラインでこれを行う必要があるので、簡単な一括処理が必要です。Googleスプレッドシート(​​またはExcel)の改行を水平にマージするにはどうすればよいですか?

現在の行を維持する必要があるのは、後でCSVが一度に1行の字幕ファイルにバッチ置換されるためです。 1つの行は、1つの字幕テキスト文字列に関連するすべてのデータを含むことが多い。換言すれば、このすべて一つのセル内

--cell one--  

A1(B1) 

A2(B2) 

A3(B3) 

--cell three--  

C1(D1)..... etc.... 

niemniej (still) 
jednak (but) 
zgodził (he agreed) 
się udzielić (to grant) 
Kate (kate) 
wywiadu. (interview) 
の望ましい結果をフォームに

--cell one--  --cell two-- 

A1     B1 

A2     B2 

A3     B3 

--cell three--  --cell four-- 

C1     D1 

C2     D2 

C3     D3 

:しかし、私はから組み合わせ真ん中と左の列の内容を取得する必要があります

google sheets translation word for word - SCREENSHOT

+0

VBA:結合する2つのセルのそれぞれから配列を作成するには、Split(cellText、vbLf)を使用します。 2つの配列をループし、テキストを連結し、セルをマージし、テキストを "zipped"バージョンに置き換えて、2つの配列を "zip"します。 –

答えて

1
=ARRAYFORMULA(JOIN(CHAR(10),SPLIT(B12,CHAR(10))&"("&SPLIT(C12,CHAR(10))&")")) 

に対応する値を連結列

両方に改行(CHR(13))のような区切り文字で文字列を分割することを試みました。結合するためにB12 & C12

+1

信じられないほどシンプルな、私はアプローチのために間違った場所を見て非常に多くの時間を費やした!ありがとう –

1

これはいくつかのヘルパー列を必要としますが、ここにはVBAのないソリューションがあります。これには、セルA1でデータを開始する必要があります。また、各セル内の各行を一意にする必要があります。また、CONCAT機能を使用するにはExcel 2016以降が必要です。

セルC1用アレイ式(CTRL + SHIFT + ENTERを使用して保存されなければならない):セルD1ため

=LEFT(CONCAT(OFFSET(D1,0,0,1,MATCH(TRUE,ISERROR(D1:W1),0)-1)),LEN(CONCAT(OFFSET(D1,0,0,1,MATCH(TRUE,ISERROR(D1:W1),0)-1)))-1)

式:

=LEFT(A1,FIND(CHAR(10),A1)-1)

セルE1のための式:

セルF1用

式:

=IFERROR(MID($A1,FIND(D1,$A1)+LEN(D1)+1,FIND(CHAR(10),$A1,FIND(D1,$A1)+LEN(D1)+1)-(FIND(D1,$A1)+LEN(D1)+1)),RIGHT($A1,LEN($A1)-(FIND(D1,$A1)+LEN(D1))))

セルG1のための式:

="("&IFERROR(MID($B1,FIND(MID(E1,2,LEN(E1)-3),$B1)+LEN(MID(E1,2,LEN(E1)-3))+1,FIND(CHAR(10),$B1,FIND(MID(E1,2,LEN(E1)-3),$B1)+LEN(MID(E1,2,LEN(E1)-3))+1)-(FIND(MID(E1,2,LEN(E1)-3),$B1)+LEN(MID(E1,2,LEN(E1)-3))+1)),RIGHT($B1,LEN($B1)-(FIND(MID(E1,2,LEN(E1)-3),$B1)+LEN(MID(E1,2,LEN(E1)-3)))))&")"&CHAR(10)

両方のセルF1を選択:G1は、その後、両方式をドラッグするフィルハンドルを使用セルW1

これは、セルあたり10行まで処理します。さらに処理する必要がある場合は、必要に応じてW1を超えてヘルパー式をドラッグし、セルC1の数式でW1への参照をヘルパー式をドラッグした場所に更新します。 (セルC1の配列式を編集するたびにCtrl + Shift + Enterキーを使用して保存することを忘れないでください)。

結果はセルC1に表示されます。挿入された改行を表示するには、セルC1のテキスト書式をWrap Textに手動で変更する必要があります。

1

私はその後、私は、各アレイのGoogleシート用

Sub splitandconcatenate() 
Dim s1() As String, l1() As String 
Dim rowcount As Integer, currentRow As Integer 
Dim i As Integer 
Dim lookupRowValue As String, sourceRowvalue As String 
Dim sourceCol As Integer, CheckCol As Integer 

sourceCol = 1 ' 1 denotes Column A. Data in A column 
CheckCol = 2 ' 2 denotes Column B. Data in B column 
TargetCol = 3# ' 3 output is written in column c 
rowcount = Cells(Rows.Count, sourceCol).End(xlUp).Row 'counts the rows with data 

'For each row 
For currentRow = 1 To rowcount 
    sourceRowvalue = Cells(currentRow, sourceCol).Value 
    lookupRowValue = Cells(currentRow, CheckCol).Value 
'Split each cell with delimiter being newline chr(13) 
    s1 = Split(Chr(13) & sourceRowvalue, Chr(13)) 
    l1 = Split(Chr(13) & lookupRowValue, Chr(13)) 
'Two arrays are created for two columns. For each string in the array, concatenate the corresponding string in the other array 
     For i = 1 To UBound(s1) 
     Cells(currentRow, TargetCol).Value = Cells(currentRow, TargetCol).Value & Chr(13) & s1(i) & "(" & l1(i) & ")" 

     Next 
Next 
End Sub 
関連する問題