我想写一个宏来读取A列和 B中的单词,看看它们是否分别匹配E列和 F中的单词,< strong>然后 将C列中的值添加到G列。
例如:
例如,您可以看到有两个&#34; Lion&#34;和&#34;马&#34;在列A和B中,因此列G具有两者的总和(10 + 8 = 18)。
不幸的是,我所做的尝试只是将值从C列复制到G列:
Sub CombineAnimals()
lastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
For x = 1 To lastRow
If InStr(1, Sheets("Sheet1").Cells(x, 1), Cells(x, 5)) <> 0 _
And InStr(1, Sheets("Sheet1").Cells(x, 2), Cells(x, 6)) <> 0 Then
Sheets("Sheet1").Cells(x, 7).Value = _
Sheets("Sheet1").Cells(x, 7).Value + Cells(x, 3)
End If
Next x
End Sub
我知道我对&#34; x&#34;做错了。 (可能还有很多其他的东西),但我无法找到一种方法让它发挥作用。有没有办法改变它,所以它将总数加在一起,就像在我的示例图片中一样?
非常感谢你的帮助。
答案 0 :(得分:3)
答案 1 :(得分:2)
除非有充分的理由不这样做,否则一个简单的SUMIFS循环应该起作用:
Sub CombineAnimals()
With Sheets("Sheet1")
lastRow = .Range("E" & .Rows.Count).End(xlUp).Row
For x = 2 To lastRow
.Cells(x, "G").Value = Application.SumIfs(.Range("C:C"), .Range("A:A"), .Cells(x, "E"), .Range("B:B"), .Cells(x, "F"))
Next x
End With
End Sub
答案 2 :(得分:1)
这样的东西会起作用,虽然可能有点矫枉过正:
您将字符串中的前两个单元格连接起来,并将此字符串用作字典的键。 然后,当找到类似的东西时,将其值添加到字典中。最后你可以打印字典。
Option Explicit
Public Sub TestMe()
Dim dict As Object
Dim rngCell As Range
Dim rngInput As Range
Dim strInput As String
Dim dblInput As Double
Dim lngCounter As Long
Dim varKey As Variant
Set dict = CreateObject("Scripting.Dictionary")
Set rngInput = ActiveSheet.Range("A2:A6")
For Each rngCell In rngInput
strInput = rngCell.Value & rngCell.Offset(0, 1).Value
dblInput = rngCell.Offset(0, 2).Value
If dict.exists(strInput) Then
dict(strInput) = dict(strInput) + dblInput
Else
dict.Add strInput, dblInput
End If
Next rngCell
For Each varKey In dict.keys
Debug.Print varKey, dict(varKey)
Next varKey
End Sub