0

このマクロは、A22-78からC行を選択して制御した場合にのみ機能します。私はそうしなくてもそれが機能することを望んでいます。この関数は、(#rows)*(各行の#columns)から1つの列を作成します

Sub RowsToColumn()
Dim RN As Range
Dim RI As Range
Dim r As Long
Dim LR As Long
Dim WS As Worksheet
Set WS = Sheets.Add
Application.ScreenUpdating = False

Columns(1).Insert
r = 0
LR = Range("B" & Rows.Count).End(xlUp).Row
For Each RN In Range("B22:B" & LR)
    r = r + 1
    For Each RI In Range(RN, Range("XFD" & RN.Row).End(xlToLeft))
        r = r + 1
        Cells(r, 1) = RI
        RI.Clear
    Next RI
Next RN
Columns("A:A").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
Application.ScreenUpdating = True
End Sub

ありがとう

4

1 に答える 1

1

私はあなたのコードを試してみましたが、それがしているように見えるのは、値を左から右に読み取り、それらをすべて列 A にそれぞれの順序で配置することです。これは役に立ちますか:

Sub Test()

Dim oRange          As Range
Dim oSheet          As Excel.Worksheet
Dim vArray()        As Variant

Dim lCnt_A          As Long
Dim iCnt_B          As Integer
Dim lCnt_C          As Long
Dim iCnt_Cols       As Integer


Set oSheet = ThisWorkbook.Sheets(1)

Columns(1).Insert
Set oRange = oSheet.UsedRange
iCnt_Cols = oRange.Columns.Count

vArray = oRange
oRange.ClearContents

For lCnt_A = 1 To UBound(vArray)
    For iCnt_B = 1 To iCnt_Cols
        lCnt_C = lCnt_C + 1
        ThisWorkbook.Sheets(2).Cells(lCnt_C, 1).Value = vArray(lCnt_A, iCnt_B)

    Next iCnt_B
Next lCnt_A

Set oSheet = Nothing
Set oRange = Nothing

End Sub

あなたの意図が間違っていたら教えてください。

于 2012-06-13T08:24:33.047 に答える