【问题标题】:how to paste in next empty cell to the right?如何粘贴到右边的下一个空单元格?
【发布时间】:2019-10-18 14:31:49
【问题描述】:

我正在尝试从右下一个空单元格中的具有偏移量和过去值的匹配单元格值中复制值。我收到错误“类型不匹配”

Dim ThisCell1 As Range
Dim ThisCell2 As Range
Dim LCol As Long
  Application.ScreenUpdating = False
  For Each ThisCell1 In Sheets("sheet1").Range("A1:A1089")
        For Each ThisCell2 In Sheets("sheet0").Range("b2:b3392")
            If ThisCell2.Value = ThisCell1.Value Then

                ThisCell2.Offset(0, 1).Copy

                ThisCell1.End(xlToLeft).Offset(0, 1).Select
                Selection.PasteSpecial Paste:=xlPasteValues
                Exit For
                End If
            Next ThisCell2
            Next ThisCell1
Application.ScreenUpdating = True

【问题讨论】:

  • ThisCell2.Value = ThisCell1.Value:您不能将单个单元格与整个范围进行比较。
  • 您正在尝试将一个单元格的值与整个范围进行比较。您要与之共谋的是什么,您想知道 B 列中的值是否在 A 列中的任何位置,或者您想知道该值是否与 A 列同一行中的值相同?
  • 我需要比较a列和b列
  • 所以我在 Sheets("sheet1").Range("A1:A1089")" 中添加了“For Each ThisCell1 In Sheets("sheet1").Range("A1:A1089")"
  • 这个接缝工作,但将所有信息复制到 sheet("sheet1").column b。我需要它复制到右边的下一个空单元格

标签: excel vba rows offset paste


【解决方案1】:

这个 sub 可以满足您的要求,并且比使用您使用的双循环要快得多。它使用公式Match 作为参数,它将查找在哪一行找到了匹配项。然后它将转到该行并找到最后使用的列并复制原始字符串的偏移量:

Dim ThisCell1 As Range
Dim ThisCell2 As Range
Dim LCol As Long
  Application.ScreenUpdating = False
        For Each ThisCell2 In Sheets("sheet0").Range("b2:b3392")
            If Not IsError(Application.Match(ThisCell2.Value, Sheets("Sheet1").Range("A1:A1089"))) Then
                    Sheets("Sheet1"). Cells(Application.Match(ThisCell2.Value, Sheets("Sheet1").Range("A1:A1089")), Columns.Count).End(xlToLeft).Offset(, 1).Value = ThisCell2.Offset(, 1)
                Exit For 'This insures you only ever get one match. Is that what is needed?
                End If
            Next ThisCell2
Application.ScreenUpdating = True

我不确定这是否是您正在寻找的确切逻辑,如果不告诉我。这是我能找到的最接近您的原始代码的近似值,将您的值与范围进行比较。

【讨论】:

  • 好的,代码运行但没有粘贴到 sheet1 列 B。Sheet0 在 B 列中有一个行列表,其中包含重复项。并且 sheet0 列 C 的编号没有重复。工作表 1 列 A 与工作表 0 列 A 具有相同的行列表,但没有重复项。我需要比较两个行列表是否匹配。并获取偏移值。如果列为空白,则复制到 sheet1 列 b,如果不是空白,则使用下一列。
  • 对不起,这是我的工作示例,指的是不同的工作表。我已经根据您的原始代码调整了这些工作表。
猜你喜欢
  • 2021-10-06
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 2019-03-14
  • 2015-02-03
  • 1970-01-01
相关资源
最近更新 更多