2017-06-16 105 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 

现在通过行循环