如何遍历列并检查该值是不是与下一个值匹配然后追加?
Posted
技术标签:
【中文标题】如何遍历列并检查该值是不是与下一个值匹配然后追加?【英文标题】:How do I loop through a column and check if the value matches the next value then append?如何遍历列并检查该值是否与下一个值匹配然后追加? 【发布时间】:2021-08-27 21:06:51 【问题描述】:我正在尝试遍历一列。如果列中的项目与列中的下一个项目匹配。如果它们相同,我将获取与第一行项目关联的值并将其附加到下面几行中的内容。
我尝试过使用嵌套的 if 循环来遍历一列。忽略我的代码的一些功能,但我不确定为什么我的比较不起作用。
For bigLoop = 1 To Length + 1
firstString = Workbooks("VBA_Basics.xlsm").Worksheets("TestSheet").Cells(bigLoop, 24).Value
Cells(bigLoop, 28).Value = Cells(bigLoop, 26)
Debug.Print firstString
For smallLoop = 1 To Length + 1
secondString = Workbooks("VBA_Basics.xlsm").Worksheets("TestSheet").Cells(smallLoop + 1, 4).Value
Debug.Print secondString
myComp = StrComp(firstString, secondString, vbBinaryCompare)
If myComp = 0 Then
Cells(bigLoop, 28).Value = Cells(bigLoop, 26).Value & " :) " & Cells(smallLoop + 1, 26).Value
End If
Debug.Print myComp
Next smallLoop
Next bigLoop
【问题讨论】:
您混合了显式工作表引用和隐式 ActiveSheet 引用。可能是您没有比较您认为的单元格。 【参考方案1】:请对您的列进行排序!然后试试这个:
Option Explicit
Option Base 1
Private Const NITEMS As Integer = 11
' Column "A"
Private Const COLUMN As Integer = 1
' Column "B"
Private Const TARGET_COLUMN As Integer = 2
' Please sort your column!
Public Sub X()
Dim I As Integer
Dim J As Integer
Dim V1 As Variant
Dim V2 As Variant
I = 1
While I <= NITEMS
V1 = ActiveSheet.Cells(I, COLUMN).Value
ActiveSheet.Cells(I, TARGET_COLUMN).Value = V1
J = I + 1
V2 = ActiveSheet.Cells(J, COLUMN).Value
While V1 = V2 And J <= NITEMS
ActiveSheet.Cells(I, TARGET_COLUMN).Value = _
ActiveSheet.Cells(I, TARGET_COLUMN).Value & " :) " & V2
J = J + 1
V2 = ActiveSheet.Cells(J, COLUMN).Value
Wend
I = J
Wend
End Sub
【讨论】:
以上是关于如何遍历列并检查该值是不是与下一个值匹配然后追加?的主要内容,如果未能解决你的问题,请参考以下文章