如果列A包含x,则列B包含y THEN添加值

我对macros很陌生(现在已经过了几天了!),但慢慢地通过我的方式。 我想创build一个macros,如果列D包含文本“(2)”,并且列AG包含文本“成人”,则将值2 添加到单元格。

如果列D包含文本“(2)”,我已经创build了一个macros,将单元格的值更改为5(而不是添加到它) – 我花了一段时间搞乱“And”函数,但我似乎无法find一种方法来考虑到D列中的“(2)”文本 AG列中的“成人”文本(我只能使其search一个或另一个) 。

这是我的尝试(这不包括我的失败尝试,包括“成人”的文字):

Sub BUBFindGuests() Dim SrchRng As Range lastRow = Range("D" & Rows.Count).End(xlUp).Row Set SrchRng = Range("D1:D" & lastRow, "AG1:AG" & lastRow) For Each cel In SrchRng If InStr(1, cel.Value, "(2)") > 0 Then With cel.Offset(0, 39) .Offset(-1, 0) = "5" End With End If Next cel End Sub 

我基本上只是试图解决如何包括AG列的“成人”文本,以及如何使macros添加,而不是改变最终值。 我也相对确定,我的代码的一些部分是不必要的或笨重的,但以我的经验水平,我不确定如何纠正。 任何帮助将非常感激。

根据你的代码判断,你想在C列中 2,如果是这种情况,应该这样做:

 Sub BUBFindGuests() lastRow = Sheets("SHEETNAME").Range("D" & Rows.Count).End(xlUp).Row For x = 1 to lastRow If InStr(1, Sheets("SHEETNAME").Cells(x, 4), "(2)") <> 0 _ 'Checks column D And Instr(1, Sheets("SHEETNAME").Cells(x, 33), "Adult") <> 0 Then 'Checks column AG Sheets("SHEETNAME").Cells(x, 3).Value = _ Sheets("SHEETNAME").Cells(x, 3).Value + 2 'Change 3 to the appropriate column End If Next x End Sub 

您可以search“ 成人”,就像search“ (2)”一样 。 只需使用InStr函数两次并结合结果布尔值。 你可以用两种方法来做到这一点,符合逻辑与或嵌套两个if语句:

  • If InStrResult1 **And** InStrResult2 Then 'do stuff End If
  • If InStrResult1 Then If InStrResult2 Then 'do stuff End If End If

对不起,形成了。

然后,您可以将当前单元格的值存储在一个variables中。 然后将2添加到该variables( myVariable = myVariable + 2 ),然后将其值设置为您的单元格而不是5。

编辑:原来我误解了你的问题。 看修改后的代码。

 Sub BUBFindGuests() Dim SrchRng As Range lastRow = Range("D" & Rows.Count).End(xlUp).Row Set SrchRng = Range("D1:D" & lastRow, "AG1:AG" & lastRow) For Each cel In SrchRng If InStr(1, cel.Value, "(2)") > 0 And InStr(1, cel.Value, "Adult") > 0 Then cel.Offset(-1, 39).Value = .Offset(-1, 0).Value & "5" Next cel End Sub