Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA基于一个单元格中的字符串计算另一个单元格_Excel_Vba - Fatal编程技术网

Excel VBA基于一个单元格中的字符串计算另一个单元格

Excel VBA基于一个单元格中的字符串计算另一个单元格,excel,vba,Excel,Vba,我想根据来自不同单元格的字符串中的关键字对另一个单元格执行简单计算。例如,H列可能有一个“购买50000股”的描述。如果出现“购买”一词,我想将B列乘以-1。是否可以根据字符串中的关键字生成条件?您可以在公式或VBA中进行此操作 在公式中,假设B1之前含有X,则改为公式 =(X)*如果(ISNUMBER(搜索(“购买”),H1)),-1,1) 在VBA中,尝试以下操作 Sub NegateB_IfPurchaseH() Dim celB As Range Dim celH As Range Di

我想根据来自不同单元格的字符串中的关键字对另一个单元格执行简单计算。例如,H列可能有一个“购买50000股”的描述。如果出现“购买”一词,我想将B列乘以-1。是否可以根据字符串中的关键字生成条件?

您可以在公式或VBA中进行此操作

在公式中,假设B1之前含有X,则改为公式 =(X)*如果(ISNUMBER(搜索(“购买”),H1)),-1,1)

在VBA中,尝试以下操作

Sub NegateB_IfPurchaseH()
Dim celB As Range
Dim celH As Range
Dim celPtr As Range

' you can change 1:10 to any other range
Set celB = Range("B1:B10")
Set celH = celB.Cells(1, 7)

For Each celPtr In celB
    If InStr(1, celPtr.Cells(1, 7).Value, "purchase", vbTextCompare) > 0 Then
        celPtr.Formula = "=-" & Mid(celPtr.Formula, 2)
    End If
Next
End Sub

您可以在公式或VBA中执行此操作

在公式中,假设B1之前含有X,则改为公式 =(X)*如果(ISNUMBER(搜索(“购买”),H1)),-1,1)

在VBA中,尝试以下操作

Sub NegateB_IfPurchaseH()
Dim celB As Range
Dim celH As Range
Dim celPtr As Range

' you can change 1:10 to any other range
Set celB = Range("B1:B10")
Set celH = celB.Cells(1, 7)

For Each celPtr In celB
    If InStr(1, celPtr.Cells(1, 7).Value, "purchase", vbTextCompare) > 0 Then
        celPtr.Formula = "=-" & Mid(celPtr.Formula, 2)
    End If
Next
End Sub

在VBA中?您可以使用
Instr
来测试“购买”。一个可能的公式可能是
=IF(IFERROR(FIND(“purchase”,H1),0)>0,-1,1)*B1
。(哎呀,刚才注意到了
excelvba
标记,所以我想你不是在找公式。)在vba中?您可以使用
Instr
来测试“购买”。一个可能的公式可能是
=IF(IFERROR(FIND(“purchase”,H1),0)>0,-1,1)*B1
。(哎呀,刚才注意到了
excelvba
标记,所以我想你不是在寻找一个公式。)我最终使用了这个公式。我不太熟悉vba,也不完全理解For语句中发生的事情。我们需要慢慢来,把它拆开。谢谢你的帮助!我最终使用了这个公式。我不太熟悉vba,也不完全理解For语句中发生的事情。我们需要慢慢来,把它拆开。谢谢你的帮助!