【问题标题】:Looping through two cell ranges in two worksheets循环遍历两个工作表中的两个单元格区域
【发布时间】:2021-04-07 15:31:16
【问题描述】:

以下代码运行,但没有得到结果。信息在正确的范围内。

Dim ID As Range
Dim SN As Range
Dim i As Integer
   Set ID = Sheet6.Range("B2:B8")
   Set SN = Sheet2.Range("C7:C184")
   For i = 2 To ID.Cells.count
      If ID.Cells(i) = SN.Cells(i) Then
         MsgBox "do something"
         ID.Cells.Offset(0, 2).Value = SN.Cells.Offset(0, -2).Value
         Else
        MsgBox "sorry"
      End If
   Next

【问题讨论】:

  • 单步执行,看看值是什么?不确定我们是否可以回答这个问题,因为我们不知道您正在获得什么结果或您正在寻找什么结果。
  • 当我应该在步出 ID 单元格中得到 msgbox“做某事”时,我得到了 msgbox“抱歉”,给了我正确的值,而 SN 单元格给了我相同的值。
  • 它们之间肯定有些不同,如果它们是日期,也许一个人也有时间。如果它们是数字,则格式可能会截断小数,如果它们是文本,则可能在之前或之后有空格等...
  • 问题出在这里:'If ID.Cells(i) = SN.Cells(i) Then' 他们似乎在搜索相同的范围。
  • 所以ID.Cells(i) 将是工作表 6 上的 B3 到 B8,SN.Cells(i) 将是工作表 2 上的 C8 到 C13。不确定这是否是您要查找的内容。

标签: excel vba loops integer range


【解决方案1】:

我找到了另一个代码并将其修改为我的工作表。这个很好用。

Dim i As Long
Dim j As Long
For i = 2 To 40
    If Sheet6.Range("C" & i).Value = "" Then
Exit For
    End If
For j = 7 To 1000
    If Sheet2.Range("c" & j).Value = "" Then
Exit For
    End If
        If Sheet6.Range("C" & i).Text = Sheet2.Range("c" & j).Text Then
            Sheet6.Range("C" & i).Offset(0, 1).Value = Sheet2.Range("c" & j).Offset(0, -2).Value
             Sheet6.Range("C" & i).Offset(0, 2).Value = Sheet2.Range("c" & j).Offset(0, 2).Value
           Exit For
         End If
Next j
Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    相关资源
    最近更新 更多