0

Excelシートには、次のようなデータがあります。

Name        Age
-------    -------
XYZ        24
ABC        25
CDE        26
GHI        27

このデータをExcelシートで次のように変換したい。

Name1     Age1    Name2     Age2    Name3     Age3    Name4     Age4
XYZ       24      ABC       25      CDE       26      GHI       27

これは可能ですか?助けてください。ありがとう!

4

2 に答える 2

4

非 VBA ソリューションについては、自動入力と並べ替えをクリエイティブに使用してこれを行うことができます。

創造的な自動入力と並べ替えを行います。 AutoFillSort1

転置されたコピーと貼り付け: AutoFillSort2

そしてあなたの完了: AutoFillSort3

于 2012-10-25T14:12:20.933 に答える
0

これを vba エディター (標準モジュール) に貼り付け、コードをボタンに追加します。
このコードは、テーブルが範囲 "A1" から始まることを前提としています。
最初の行にはヘッダーが含まれ、他の行には例のように値が含まれます。
行8からの出力を貼り付け
ました。それが役に立ったかどうか教えてください。

Option Explicit

Sub Name_Age()

Dim oRange                  As Excel.Range
Dim iRange_Cols             As Integer
Dim lRange_Rows             As Long
Dim lCnt                    As Long

Dim vArray                  As Variant
Dim vArray_Dest             As Variant

Dim lUbound_Rows            As Long
Dim lUBound_Cols            As Long


Set oRange = ThisWorkbook.Sheets(1).UsedRange
iRange_Cols = oRange.Columns.Count
lRange_Rows = oRange.Rows.Count - 1
ReDim vArray(1 To lRange_Rows, 0 To iRange_Cols)
ReDim vArray_Dest(1 To iRange_Cols, 1 To (lRange_Rows * iRange_Cols))
vArray = oRange

lCnt = 0
For lCnt = 1 To lRange_Rows
    vArray_Dest(1, (lCnt * 2) - 1) = CStr("Name" & lCnt)
    vArray_Dest(1, (lCnt * 2)) = CStr("Age" & lCnt)
    vArray_Dest(2, (lCnt * 2) - 1) = vArray(1 + lCnt, 1)
    vArray_Dest(2, (lCnt * 2)) = vArray(1 + lCnt, 2)
Next lCnt

lUbound_Rows = UBound(vArray_Dest, 1)
lUBound_Cols = UBound(vArray_Dest, 2)

Set oRange = Nothing
Set oRange = ThisWorkbook.Sheets(1).Range(Cells(8, 1), Cells(8 + lUbound_Rows - 1, lUBound_Cols))
oRange = vArray_Dest

End Sub
于 2012-10-25T11:05:56.983 に答える