我想知道是否有人可以幫助我。找到文本字符串時從列中複製值
我正在使用下面的代碼來搜索任何包含值「OVH」的單元格的命名區域(「ProjectName」)。當這個值被發現,該腳本創建與該範圍的唯一值的列表,並將它們粘貼到指定範圍「EnhancementsList」
Sub UniqueEnhancements()
Dim MyCell
With CreateObject("scripting.dictionary")
For Each MyCell In Range("ProjectName").Value
If InStr(1, MyCell, "OVH") > 0 Then
.Item(MyCell) = 1
End If
Next
Range("EnhancementsList").Resize(.Count) = Application.Transpose(.keys)
End With
Worksheets("Enhancements").Columns("B:B").AutoFit
Range("EnhancementsList").Sort Key1:=Range("EnhancementsList").Cells(2, 1), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub
的代碼工作正常,但我想如果可能的話,要適應這種因此雖然它檢查「OVH」文本字符串的「ProjectName」範圍,但它會複製並從列中向左一步創建具有指定範圍「Task」的列中的唯一值列表,但我不確定如何做到這一點,儘管花了幾天的時間想出一個解決方案。
我都試過了,用有限的知識,我有,要改變這一行:
.Item(MyCell) = 1
到
.Item(MyCell.offset -1) = 1
和
.Item.offset-1 (MyCell) = 1
但我收到的失配誤差。
我只是想知道是否有人可以看看這個請讓我知道我要去哪裏錯了。
許多的感謝和親切的問候
爲什麼在上面的代碼完成遍歷字典並將列中的每個值打印到左邊之後,您不會創建新循環? – mattboy
另一種方法是過濾您的範圍並複製結果。當你可以使用這種方法時,它比循環更有效率。在這裏看看如何根據類似的標準自動過濾的例子:[自動過濾部分字符串](http://stackoverflow.com/a/16901714/138938),以及如何複製部分自動篩選範圍:[複製/粘貼可見單元格](http://stackoverflow.com/q/17531128/138938)。 –