我有一列數據大約有800條記錄。每個18個單元格都是一個記錄。我需要一個腳本,它能夠每隔18個單元格動態地將它們轉換爲一行,或者甚至可以通過編寫excel公式來將列中的每18條記錄轉置爲一行。將單列轉置爲多行
Q
將單列轉置爲多行
-1
A
回答
1
您可能會被問到「您嘗試過了些什麼」,因爲您最好是對此有所懷疑,並詢問何時卡住而不是要求提供完整的解決方案。剛纔說過,我可以爲您提供一些提示,幫助您入門。
要在VBA中執行此操作,您需要執行一個循環,該循環從第一個單元格開始,獲取由該單元格和隨後的18行組成的範圍,然後將其粘貼到(可能)工作簿中的另一個工作表中,從一列到一行。循環將抵消19個單元格並重新開始。
看看,我在此線程答曰: Unable to write a Macro for Excel VBA to copy a specific cell value to the next blank rows
這會給你的語法做一個循環是有點類似你的。
要獲得執行粘貼/轉置的語法,請手動執行並使用宏錄製器記錄您的操作。這可以在Developer選項卡上找到。 (如果您沒有可見的開發人員選項卡,請轉至文件 - >選項 - >自定義功能區並打開開發人員選項卡。)
試試看,如果您發現不能使其工作只需再次發佈你的卡住的地方的細節。
0
您可以使用此VBA代碼來實現此目的。
Public Sub TransposePaste()
'Value we want to step by....
Dim stepVal As Long
stepVal = 18
'Declare start row variable (-1)
Dim row As Long
row = 0
'Declare the column the data is coming from
Dim col As Long
col = 1
'Declare and set worksheet
Dim ws As Worksheet
Set ws = Sheet1
'end row of the data
Dim endRow As Long
endRow = ws.Cells(ws.Rows.Count, col).End(xlUp).row
'cycle to end of data end of data...
For i = 1 To endRow Step stepVal
'increment row each time
row = row + 1
'cycle through the columns outputting the data
For j = 1 To stepVal
Sheet1.Cells(row, j).Value = Sheet1.Cells(i + j - 1, col).Value
Next j
Next i
末次
相關問題
- 1. 表單:將單列轉置爲多行
- 2. Excel VBA將多列轉置爲單列多行
- 3. 將列轉置爲單列行
- 4. 將多列多行轉換爲多列單行數據幀
- 5. 將多列轉置爲R中的行
- 6. 將多行轉換爲單列
- 7. 將多行轉換爲列w。單排
- 8. 將n行轉置爲單列
- 9. 將多列轉換爲行
- 10. 將行轉換爲多列
- 11. 將多行轉換爲列
- 12. 將行轉置爲列MySQL
- 13. 將列轉置爲行
- 14. 將列轉置爲行並將日期行轉換爲列
- 15. 如何將多列轉換爲單列?
- 16. 如何將多行轉換爲單行?
- 17. 將多行bash轉換爲單行
- 18. 如何將多行轉換爲單行
- 19. 將單元行轉換爲單元列
- 20. 如何僅基於行號將單列表轉換爲多列?
- 21. 如何使用行號將多列轉換爲單行?
- 22. 在逗號分隔的列上將多行轉換爲單行
- 23. 查看計數列,並將值從單行轉換爲多行
- 24. 單列轉換爲多列
- 25. 將單個值轉換爲多行
- 26. 將列轉置爲列
- 27. 將列轉置爲列
- 28. SQL將多列轉換爲行
- 29. 將多行轉換爲列編輯
- 30. 將多行轉換爲列表
嗨,歡迎SO。我們喜歡幫助人們,但我們必須看到你所嘗試過的。這證明你有問題,並不是爲了得到一些複製粘貼代碼。 – rcdmk
如果你的數據以A1開始,那麼在B1中輸入:'= IF(MOD(ROW(),18)= 1,OFFSET($ A1,COLUMN() - 2,0),「」)'將公式填入填滿18列,然後再覆蓋800行。 –
蒂姆的想法是一個優雅的,應該工作,但我承認,我不願意使用基於公式的解決方案,如800行涉及這樣的事情。取決於你的電腦的速度,但我發現,如果你投入大量精力,像Excel這樣的查找式公式往往會在Excel中磨合。如果你走這條路,我會傾向於做一次計算,複製公式塊並粘貼爲值。 –