你好這個代碼不是我最初做的,有一些thigns在這裏我不太明白我已經改變了它從我的同事有點代碼,以適應我的數據,它的工作原理。但太慢了。當我有4000 + kb的excel文件時,它可能會完全凍結。 (我已經檢查過,在這個轉置器運行的時候和之後,它仍然在excel行的限制內,我之前做過計算,並且創建了一個宏來根據列和行的數量自動分割excel文件,以確保這一點) 。這段代碼似乎開始快,然後越慢,運行時間越長。至少這對我來說似乎是存在的。另一個優化的宏VBA代碼爲Excel 2007年。代碼是一種轉換器爲我的數據
隨意提出任何方法使此代碼更快/更好!感謝您的時間。 對不起,我不明白這個代碼超好。
我已經關閉屏幕更新,自動計算,等等等等
Dim InitRange As Range
Dim Counter As Range
Dim paracount As Long
Dim Filler As Range
Dim ParaSelect As Range
Dim Paraloc As Range
Dim Paravalloc As Range
Dim Unitloc As Range
Dim methodloc As Range
Dim CurNum As Long
Dim MaxNum As Long
Dim eCell As Range
Dim checkRow As Long
Dim InsertRow As Long
Dim x As Long
Dim y As Long
Dim vRow As Long
CurNum = 0
MaxNum = 0
x = 1
Range("K1").End(xlToRight).Offset(0, 0).Select
Set ParaSelect = Range("K1", ActiveCell)
InsertRow = ParaSelect.Count - 1
Set InitRange = Range("A4", "F4")
Set Counter = InitRange
Do
MaxNum = MaxNum + 1
InitRange.Offset(MaxNum, 0).Activate
Loop Until ActiveCell = ""
Set eCell = InitRange.Offset(0, 0)
Do
eCell.Offset(x, 0).Activate
Rows(eCell.Offset(x, 0).row & ":" & eCell.Offset(x, 0).row + InsertRow - 1).Insert
x = x + InsertRow + 1
If x > MaxNum * (InsertRow + 1) Then Exit Do
Loop
Range("A1").Activate
Set Filler = InitRange
Set Paraloc = Range("G4")
Set Paravalloc = Range("H4")
Set Unitloc = Range("I4")
Set methodloc = Range("J4")
vRow = 0
y = 0
Do
ParaSelect.Copy
Paraloc.Offset(y, 0).PasteSpecial xlPasteValues, Transpose:=True
ParaSelect.Offset(1, 0).Copy
methodloc.Offset(y, 0).PasteSpecial xlPasteValues, Transpose:=True
ParaSelect.Offset(2, 0).Copy
Unitloc.Offset(y, 0).PasteSpecial xlPasteValues, Transpose:=True
ParaSelect.Offset(CurNum * (InsertRow + 1) + 3, 0).Copy
Paravalloc.Offset(y, 0).PasteSpecial xlPasteValues, Transpose:=True
Filler.Offset(y, 0).Copy
CurNum = CurNum + 1
y = y + 1
checkRow = 1
Do
Filler.Offset(y, 0).PasteSpecial xlPasteValues
y = y + 1
Filler.Offset(y, 0).Activate
checkRow = checkRow + 1
Loop Until checkRow > InsertRow
Loop Until CurNum >= MaxNum
喬恩取得了良好的suggestiong>>我要defiantely提供的東西給你看你們這個代碼是什麼。圖1是什麼文件看起來是換位之前
圖2是文件的樣子被調換後。不用擔心列k和之後將被刪除。
注:該文件可能有任意數量的列和行
那麼,您只需從第k列中取出數據並將它們放入每個對象ID的行中?看起來相當簡單。我會爲你迅速把東西扔在一起。希望你從我的代碼寫作中學到了一些東西。 – Jon49
當然,我正在學習很多東西。我至少有一個想法,現在如何利用數組以及它們如何工作! =) – Chaostryder