1

我正在尝试遍历一列。如果列中的项目与列中的下一个项目匹配。如果它们相同,我将获取与第一行项目关联的值,并将其附加到下面几行中的内容。

我尝试过使用嵌套的 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
4

1 回答 1

0

请对您的专栏进行排序!然后试试这个:

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
于 2021-06-11T18:31:50.343 回答