2017-06-16 64 views
0

我用宏,在這裏我想有這樣的掙扎:VBA - 如果條件滿足,然後把公式另一列

我有列的表A - AH和行會是可變的。如果列A包含「客戶」,那麼它應該將公式(= $ K $ 1 & V3)添加到列L.換句話說,如果在第3行,列A3是「客戶」,則在L3上將把式。在第4行,A4列不是「客戶」,而是別的東西,那麼單元格L4應該是未觸及的。我想將它用於所有單元格,這意味着宏應該識別表格的末尾在哪裏=因爲行數將從一天開始改變。

我已經有這樣的代碼:

Sub testFind() 
Dim rng As Range 
Dim rngFound As Range 

Set rng = Range("A:A") 

Set rngFound = rng.Find("Customer") 

If rngFound = "Customer" Then 
    ActiveCell.FormulaR1C1 = "=R1C11&RC[10]" 

Else 


End If 


End Sub 

但它不工作,顯然:)。

非常感謝您的任何建議!

+1

只是好奇,爲什麼你需要VBA?在'L1'中,你可以做'= If($ A1 =「Customer」,[formula],「」)',然後向下拖動,否? – BruceWayne

+0

噢,是的,這也可以,但是文件每天都在變化,我想,通過VBA的解決方案可能會更流暢。 – Srpic

回答

1

如果你想使用VBA的解決方案,你可以使用下面的代碼(代碼註釋中說明):

Option Explicit 

Sub testFind() 

Dim LastRow As Long 
Dim rng As Range, C As Range 

With Worksheets("Sheet1") ' <-- replace "Sheet1" with your sheet's name 
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' last row in column A 
    Set rng = .Range("A2:A" & LastRow) ' set the dynamic range to be searched 

    ' loop through all cells in column A 
    For Each C In rng 
     If C.Value = "Customer" Then 
      C.Offset(, 11).Formula = "=$K$1&V" & C.Row ' use offset to put the formula on column "L" 
     End If 
    Next C 
End With 

End Sub 

:如果在「A」列的值由詞「客戶」(沒有之前和之後是精確匹配),然後輸入如下行:

If C.Value Like "*Customer*" Then 
+0

優秀!!它工作正常。非常感謝,Shai! :) – Srpic

0

細胞(Rows.Count, 「A」)結束(xlUp).Row - 可以用來發現最後一排表 和使用。如果要檢查,如果A列中包含 「客戶」 -

If Activesheet.formulaRC[-10]= "customer" then 
     ActiveCell.FormulaR1C1 = "=RC[-1]&RC[11]" 
    end if 

現在通過行循環

相關問題