0
下面是我的數據的一個例子(列向量):VBA通過定界符轉列向量和包括nullstrings
NAME
甲
乙
Ç
甲
B
Ç
[空白單元格]
乙
Ç
NAME
甲
乙
Ç
注意,我的文檔中的[空白單元格]實際上只是一個空白單元格,沒有公式數據等
最終,我只需要通過轉NAME分隔的數據。 NAME細胞是唯一的細胞:
Left(rngCell.Value, 2) = Left(StrConv(rngCell.Value, vbUpperCase), 2)
我的代碼是打破我的轉置,使一個新行所有的名字和所有[空白單元格]秒。
我試圖讓:
NAME A B C A B C B C
NAME A B C A B C A B C
NAME A B C B C B C
但我的代碼返回:
NAME A B C A B C
B C
NAME A B C A B C A B C
NAME A B C
B C
B C
這裏是我使用的代碼:
Sub Dataclean()
Dim lngRowLast As Long, _
lngRowPaste As Long, _
lngColOffset As Long
Dim rngCell As Range, _
rngDataSet As Range
Dim strSourceTab As String, _
strOutputTab As String
'Tab name containing source data. Change to suit.
strSourceTab = "sheet2pull"
'Tab name for data output. Change to suit.
strOutputTab = "transposed"
lngRowLast = Sheets(strSourceTab).Cells(Rows.Count, "A").End(xlUp).Row
'Assumes the original dataset is in Column A and starts at Row 1. Change to suit.
Set rngDataSet = Sheets(strSourceTab).Range("A1:A" & lngRowLast)
Application.ScreenUpdating = False
For Each rngCell In rngDataSet
If Left(rngCell.Value, 2) = Left(StrConv(rngCell.Value, vbUpperCase), 2) Then
If lngRowPaste = 0 And lngColOffset = 0 Then
lngRowPaste = 1
lngColOffset = 1
Else
lngRowPaste = lngRowPaste + 1
lngColOffset = 1
End If
ElseIf lngRowPaste = 0 And lngColOffset = 0 Then
lngRowPaste = 1
lngColOffset = 1
End If
Sheets(strOutputTab).Cells(lngRowPaste, lngColOffset).Value = rngCell.Value
lngColOffset = lngColOffset + 1
Next rngCell
Application.ScreenUpdating = True
End Sub
請讓我知道我是否不清楚或困惑。我試圖儘可能明確,但解釋起來往往很困難!非常感謝。
我對VBA有點新,但是學習。
添加此(在您的第一個IF詞後):rngCell.value <>「」和 – 2013-04-02 15:58:32
謝謝!隨意發佈這個答案,我會給它一個檢查! – user2224949