Excel 用VBA代码计算和比较单元格值

Excel 用VBA代码计算和比较单元格值,excel,vba,Excel,Vba,我将A列中的值与B列中的值进行比较,并希望C列中有输出。列A包含ID。每个ID可以有一个云组件,也可以没有云组件。一个全是云的应用程序应该有云的输出。一个完全不是云的应用程序应该有云的输出。具有云而非云组件的应用程序是一种混合应用程序 我尝试了一个基本的excel公式,将a列中的值的范围与B列中的值进行比较,但在VBA中必须有一种更简单的方法。我不熟悉编码,但我不认为它需要像在数组中存储值那样复杂 Sub CompareCells() If Range("AA:AA").value =

我将
A列中的值与B列中的值进行比较,并希望
C列中有输出。列
A
包含ID。每个ID可以有一个云组件,也可以没有云组件。一个全是云的应用程序应该有云的输出。一个完全不是云的应用程序应该有云的输出。具有云而非云组件的应用程序是一种混合应用程序

我尝试了一个基本的excel公式,将a列中的值的范围与B列中的值进行比较,但在VBA中必须有一种更简单的方法。我不熟悉编码,但我不认为它需要像在数组中存储值那样复杂

Sub CompareCells()
    If Range("AA:AA").value = Range("AA:AA").value Then
       'Not sure what to do here to evaluate after making sure the range is true
    Else
        'Not sure where to go next
    End If
End Sub

附图片示例。根据每个应用程序的配置值,输出应给出Not cloud、Hybrid或cloud的值


=IF(COUNTIFS(A:A;A2;B:B;“云”)>0;1;0)+IF(COUNTIFS(A:A;A2;B:B;“非云”)>0;1;0)=2;“混合型”;IF(COUNTIFS(A:A;A2;B:B;“云”);“云”;“非云”)
如果输入C2(假设上面是在A和B中)并向下复制,这将起作用:

=IF(COUNTIFS(A:A,A2,B:B,"Cloud")=0,"Not Cloud",IF(COUNTIFS(A:A,A2,B:B,"Not Cloud")=0,"Cloud","Hybrid"))

如果首选,
R1C1
样式:

=IF(COUNTIFS(C[-2],RC[-2],C[-1],"Cloud")=0,"Not Cloud",IF(COUNTIFS(C[-2],RC[-2],C[-1],"Not Cloud")=0,"Cloud","Hybrid"))

因此,如果您希望为此创建一些自动化,您可以使用以下内容:

With ActiveSheet

    .Range("C2:C12").FormulaR1C1 = _
        "=IF(COUNTIFS(C[-2],RC[-2],C[-1],""Cloud"")=0,""Not Cloud"",IF(COUNTIFS(C[-2],RC[-2],C[-1],""Not Cloud"")=0,""Cloud"",""Hybrid""))"
    ActiveSheet.Calculate
    .Range("C2:C12").Value = .Range("C2:C12").Value

End With

如果使用公式,这实际上会容易得多。列表将始终按ID排序?是的,它将始终按ID排序ID@RyanColeman检查我下面的答案。这个公式在excel中运行得非常好。类似的格式是否适用于VBA?选项2-您可以编写一个宏,用公式填充“C列”,然后粘贴特殊值。。选项3-或者您可以使用
WorksheetFunction.SumIfs
选项4在VBA中重新创建公式-或者您可以编写自己的计数例程-但在所有情况下,公式都是最快最简单的选项。如果你想让它自动化,那么我可能会先看看选项2。