2012-11-15 37 views
0

我有5028行,不包括標題和3列,想要通過更改列「B」中的值在「C」中設置值1.7。目標查找多行 - MS-Excel宏

使用目標查找選項它可能只適用於一個單元格。我想爲5028行做同樣的事情,請通過運行一些宏來幫助完成任務。

+0

它應該是可能的。您是否嘗試過製作自己的宏? Excel可以通過記錄您的操作自動創建一個宏,然後您可以編輯它創建的代碼。 – PowerUser

+1

好奇......這是某種單向散列,它會阻止您僅僅通過反轉計算來確定列B中的值?即一個簡單的公式?聽起來像你可能不需要一個宏或「目標搜索」功能。 – Marc

回答

2

約翰·布斯托斯指出,正確的想法,這裏是一個有效的解決方案:

Public Sub Demo() 
    Dim rngRow As Range 
    For Each rngRow In UsedRange.Rows 
    rngRow.Cells(1, 3).GoalSeek Goal:=1.7, ChangingCell:=rngRow.Cells(1, 2) 
    Next rngRow 
End Sub 

編輯:

使用ActiveSheet.UsedRange.Rows而不是UsedRange.Rows,如果您打算將此作爲模塊中的宏使用,而不是作爲工作表之一或任何其他對vali的引用d範圍。

對於您的示例,您可能更願意使用:Range("A2:C5028").RowsMySheet.Range("A2:C5028").Rows

編輯:

Public Sub Demo() 
    On Error Resume Next 
    Dim rngRow As Range 
    For Each rngRow In ActiveSheet.UsedRange.Rows 
    rngRow.Cells(1, 3).GoalSeek Goal:=1.7, ChangingCell:=rngRow.Cells(1, 2) 
    Next rngRow 
End Sub 
+0

嗨jook,非常感謝..但我在vba爲零,我只是試圖在模塊中複製你的代碼並執行,我得到'object required'錯誤,然後如你所說我將它改爲activesheet.usedrange.rows,那麼我得到'參考是無效的'錯誤。請幫助,如果可能的話,請給我準確的代碼,可以將其放入模塊中。 – davidb

+0

嗨,jook,它工作得很好。非常感謝你。 – davidb

+0

@davidb好吧,現在,這不會中斷,但請記住,5028行需要相當長的一段時間。它應該作爲一個模塊宏。如果您只需要在特定的工作表或區域上使用它,請使用'CodeNameOfYourWorksheet.Range(「A2:C5028」)。行 - - 代號不同於你可以在excel中看到的工作表名稱 - 只是google它;) – Jook