編輯#1,從去年發佈照片刪除
OK,讓我們試試這個代替。你有這樣的工作簿中開始了:
嘗試運行代碼的這種修改:
Sub TopComp()
Dim i As Range, TargetRng As Range
Dim TargetCounter As Long
Dim AllSheet As Worksheet, TopSheet As Worksheet
'declare worksheets for easy reference
Set AllSheet = ThisWorkbook.Worksheets("All Competition")
Set TopSheet = ThisWorkbook.Worksheets("Top 10 Competition")
For Each i In AllSheet.Range("E32:BL32")
If i.Value > 9 Then
TargetCounter = TargetCounter + 1
Set TargetRng = TopSheet.Cells(1, TargetCounter).EntireColumn
i.EntireColumn.Copy TargetRng
End If
Next i
End Sub
這應該給你以下,這是我想你想:
-
酷 - 假設你開始工作簿看起來像這樣:
你可以運行該代碼有一個最終值> 10的列來填充:
Option Explicit
Sub CheckColumns()
Dim LastCol As Long, LastRow As Long, _
ColIdx As Long, TargetColCounter As Long
Dim SheetOne As Worksheet, SheetTwo As Worksheet
Dim ColRng As Range, TargetRng As Range
'assign sheets for easy reference
Set SheetOne = ThisWorkbook.Worksheets("Sheet1")
Set SheetTwo = ThisWorkbook.Worksheets("Sheet2")
'identify the last row and last column to set bounds on loop
LastRow = SheetOne.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastCol = SheetOne.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
'loop through the columns
For ColIdx = 1 To LastCol
If SheetOne.Cells(LastRow, ColIdx).Value > 10 Then
TargetColCounter = TargetColCounter + 1
Set ColRng = Range(SheetOne.Cells(1, ColIdx), SheetOne.Cells(LastRow, ColIdx))
Set TargetRng = Range(SheetTwo.Cells(1, TargetColCounter), SheetTwo.Cells(LastRow, TargetColCounter))
ColRng.Copy TargetRng
End If
Next ColIdx
End Sub
嘿@ user2788749,你能告訴我們更多關於這個問題的信息?工作表中每行的值是否需要重複計算,還是每個工作簿一個值?或每個工作表?你需要評估這個在許多工作簿或只是一個? –
對不起。每列的末尾都有一個值。如果該值高於10,我想複製整個列並將其過濾到另一個表中。它會重複所有列約60次。 – user2788749