【问题标题】:Loop through cells and copy paste values according to if condition循环遍历单元格并根据 if 条件复制粘贴值
【发布时间】:2018-02-02 21:52:39
【问题描述】:

我想遍历一系列单元格并提取特定信息。如果值cell 与变量 r.Value 相同(一个变量,它是一个每次都会改变的输入值,所以它必须保持作为一个变量)。所以,因为我有单元格(范围),所以你理解它是工作表 G 列中所有单元格的循环(“跟踪器”)。到目前为止它可以工作,但它唯一要做的就是获取第一个单元格偏移并将其粘贴到目标工作表的单元格 d1 中,覆盖我的标题。我希望它从单元格 D2(第一个空单元格)粘贴它,并对所有遵守 if 条件的单元格执行此操作。有任何想法吗?代码如下..

下面的代码是修改后的!

日期的问题如上图所示。我希望它出现在单元格内,而不是在页面顶部。

Dim v As Range
    Set v = Sheets("1").Cells(Worksheets("1").Rows.Count, "D").End(xlUp)
    With Sheets("Tracker")
    For Each cell In .Range(.Cells(2, "G"), .Cells(.Rows.Count, "G").End(xlUp))
    If cell.Value = r.Value Then
    Set v = v.Offset(1, 0)
    v = cell.Offset(0, -2).Value
    End If
    Next cell
    End With

【问题讨论】:

  • For Each cell In Range(cells(2, "G"), .cells(.rows.count, "G").End(xlUp))
  • 仍然。它说 .cells(.rows 有错误
  • 是的,我习惯于用 With ... End With 显式定义父工作表,以至于我错误地输入了句点。

标签: vba excel loops range


【解决方案1】:

避免选择;明确定义父工作表;从下往上查找以找到最后填充的单元格;用起点和终点定义您的范围。

Dim v As Range
Set v = WORKSheets("1").Cells(WORKSheets("1").Rows.Count, "D").End(xlUp)
with WORKSheets("Tracker")
    For Each cell In .Range(.cells(2, "G"), .cells(.rows.count, "G").End(xlUp))
        If Int(cell.Value2) = Int(r.Value2) Then
            Set v = v.Offset(1, 0)
            v = cell.Offset(0, -1).value
        end if
    Next cell
end with

【讨论】:

  • 好吧,什么都没有改变......我希望这个宏循环遍历工作表(“Tracker”)的列 G 的单元格,如果单元格的值等于r.Value(在宏开始之前在弹出窗口中输入的变量)然后,我希望将同一行的 F 列中的单元格复制粘贴到工作表的 D 列中(“1”)。对 G 列中的所有单元格进行相同的处理
  • 我想这也可以通过 vlookup 来完成,但我不知道如何在多行中 vlookup 一个值..
  • 见上面的修改。请记住1 <> "1",因此如果您使用输入框,请确保您将文本与文本或数字与数字进行比较,而不是将看起来像数字的文本与真实数字进行比较。
  • CLng 转换并四舍五入,以便中午之后的时间可以推到第二天。使用application.rounddown(cell.value2, 0) 或更简单的Int(cell.value2)
  • Int(...) 实现见上文。
猜你喜欢
  • 2014-02-21
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 2014-12-27
  • 2021-10-03
  • 1970-01-01
相关资源
最近更新 更多