2017-12-21 6 views
0

Excelのシートに256列あります。私は列のペアをマージすることによってそれらを128列に持っていく必要があります。どのように私は、シート全体の二つのセルを連結するプロセスを繰り返すことができExcelの列を繰り返し連結する方法

例:

Col | Col2 | Col3 | Col4 

1: | 45 | 2: | 556 

1: | 34 | 2: | 567 

今私の予想結果は、私がExcelでこれを実行するにはどうすればよい

Col1 | Col2 

1:45 | 2:556 

1:34 | 2:567 

のですか?

VBAを使用できますか?

+1

コル= 1〜256、ステップ2 'ループに使用 '、次いでinisdeあなた' Concatenate'を行います –

+0

私はVBを使うべきですか?またはExcelで行うことができます –

+0

どのExcelのバージョンを使用していますか? –

答えて

1

=OFFSET(A1, , COLUMN()-1)&OFFSET(B1,,COLUMN()-1) 

Example

+0

ありがとう@Tomこの数式は小さなデータセットでうまくいきます。私のデータには256行と列が含まれているので、これを適用できませんでした。 –

2

単純な数式= A2 & B2の2つの列を追加します。コピーしてください。結果の式の列をコピーし、特別な値を貼り付けて式を削除します。

+0

問題は、データを含む256列があることです。数式を使用するには、数式を列257から385に配置するか、繰り返して列を挿入し、下にドラッグし、値を変更し、列AおよびBなどを削除する必要があります。だからマクロは最速のソリューションです –

2

範囲が "A1:IV1000"(必要なものに変更)であると仮定します。最後に、元の範囲がクリアされ、結果の配列がダンプされます。

(下の画像における細胞 A4で)式を用いて
Sub ConcatColumns() 

    Dim rng As Range 
    Dim x As Long, c As Integer, z As Integer 
    Dim arr, arrResult 
    Const COLS As Integer = 256 

    Set rng = Range("A1:IV100") '//256 columns 
    arr = rng.Value 
    ReDim arrResult(1 To UBound(arr, 1), 1 To COLS/2) 
    For x = 1 To UBound(arr, 1) 
     z = 1 
     For c = 1 To COLS - 1 Step 2 
      arrResult(x, z) = arr(x, c) & arr(x, c + 1) 
      z = z + 1 
     Next 
    Next 

    rng.ClearContents '//Clear all previous data 
    Range("A1").Resize(UBound(arrResult, 1), UBound(arrResult, 2)).Value = arrResult '//Dump result 

End Sub 
+0

ありがとう、このVBAは素晴らしい@JohnyL素晴らしい。私のすべてのデータは、ジッピーで処理されました。 –

+0

@LakshmiKrishnaKumaarよろしくお願いします! :) – JohnyL

関連する問題