Excelファイルには9枚あります。各シートには1668行と34のサプライヤがあります。すべてのデータを含む1枚のシートを作成したいと思います。私は重複があるこの方法を知っているが、それは今は問題ではない。コードをスピードアップする方法はありますか?およそ510,000レコードをコピーするには永遠の時間がかかります。 (あなたは私がforループでそれを実行しようとしました私の最初の試みとのコメントを参照することができ、それは良いアイデアではありませんでした。)このVBAコードをスピードアップするには?
Sub goEasy()
Dim wsText As Variant
Dim sht As Worksheet
Dim wSum As Worksheet
Dim service As String
Dim supplier As String
Dim priceRange As String
Dim price As String
Dim Lrow As Long, LastRow As Long
Dim a As Long, b As Long
Set sht = ThisWorkbook.Worksheets(4)
Set wSum = ThisWorkbook.Worksheets("Summary")
wsText = Array("<25K", "25K <100K", "100K <250K", "250K <500K", "500K <1M", "1M <5M", "5M <15M", "15M <30M", "30M <50M")
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
For Each element In wsText
'For i = 5 To LastRow
a = 4
b = 12
Do While a < LastRow
'For j = 13 To 47
If a = LastRow Then
a = 4
Exit Do
End If
a = a + 1
Do While b <= 47
If b = 47 Then
b = 12
Exit Do
End If
b = b + 1
Lrow = wSum.UsedRange.Rows(wSum.UsedRange.Rows.Count).Row + 1
service = ThisWorkbook.Worksheets(element).Cells(a, 1).Text
supplier = ThisWorkbook.Worksheets(element).Cells(4, b).Text
priceRange = ThisWorkbook.Worksheets(element).Cells(2, 1).Text
price = ThisWorkbook.Worksheets(element).Cells(a, b).Text
wSum.Cells(Lrow, 1) = service
wSum.Cells(Lrow, 2) = supplier
wSum.Cells(Lrow, 3) = priceRange
wSum.Cells(Lrow, 4) = price
'Next j
Loop
'Next i
Loop
Next element
End Sub
改善が必要な作業コードをお持ちの場合は、間違った場所にある可能性があります。 [Code Review](http://codereview.stackexchange.com/)は、既存/作業コードを処理し、ベストプラクティスを含めたスピード、セキュリティ、持続可能性、長寿性を向上させるために最善を尽くすところです。試してみる。彼らは良いです! – Ralph
自動計算をオフにして画面更新を全然役立たないのですか? –
ありがとうラルフ、私はそれを知らなかった。 –