2013-08-02 46 views
0

我想知道是否有人可以幫助我。找到文本字符串時從列中複製值

我正在使用下面的代碼來搜索任何包含值「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 

但我收到的失配誤差。

我只是想知道是否有人可以看看這個請讓我知道我要去哪裏錯了。

許多的感謝和親切的問候

+0

爲什麼在上面的代碼完成遍歷字典並將列中的每個值打印到左邊之後,您不會創建新循環? – mattboy

+0

另一種方法是過濾您的範圍並複製結果。當你可以使用這種方法時,它比循環更有效率。在這裏看看如何根據類似的標準自動過濾的例子:[自動過濾部分字符串](http://stackoverflow.com/a/16901714/138938),以及如何複製部分自動篩選範圍:[複製/粘貼可見單元格](http://stackoverflow.com/q/17531128/138938)。 –

回答

0

的問題是,你使用.value的,而不是.cells爲您的For Each循環。所以了myCell被結束了作爲一個字符串,你不能從一個字符串偏移

試試這個:

For Each MyCell In Range("ProjectName").Cells 
    If InStr(1, MyCell.Value, "OVH") > 0 Then 
     .Item(MyCell.Offset(0,-1)) = 1 
    End If 
Next 

(未測試)

+0

您好@dendarii,感謝您花時間回覆我的文章以及提出的解決方案。我測試了代碼,它將列中的值複製到左側,但不幸的是,它將重複值複製到目標工作表,而不是唯一的值。它似乎也會循環使用第一組值並且無法複製下面的這些值。非常感謝和親切的問候 – IRHM

0

Offset格式

Offset([RowOffset],[ColumnOffset]) 

因此,如果您希望獲得單元格左側的一列值,則需要執行以下操作:

MyCell.Offset(0,-1) 
+0

Hi @Jaycal,感謝您花時間回覆我的文章和建議。我想我正確地實現了這個,所以我將'.Item(MyCell)= 1'改成了'.Item(MyCell.Offset(0,-1))= 1'。如果我正確地做了這個,不幸的是這會造成運行時間'42'不匹配錯誤。非常感謝和衷心的問候 – IRHM

+0

是'MyCell.Offset(0,-1)'的一個整數值?這可能是爲什麼它拋出錯誤 – Jaycal

+0

嗨@Jaycal,非常感謝你回到我身邊。我只是想讓你知道,因爲張貼我的要求已經改變,現在這是多餘的。感謝您花時間幫助我,並且一切順利。 – IRHM

相關問題