【问题标题】:excel vba to copy/paste data fron another sheet if conditions match (but not +1)如果条件匹配(但不是+1),则excel vba从另一张表中复制/粘贴数据
【发布时间】:2016-03-15 14:31:38
【问题描述】:

几乎解决了问题,但仍需要帮助。 这是代码:

Sub bandymas()
LastRow = Sheets("Darbinis").Cells(Sheets("Darbinis").Rows.Count, "D").End(xlUp).Row
dim i 
i=0
for each c in Sheets("Darbinis").Range("D1:D" & lastRow)
    i=i+1
    If Sheets("Sàskaita-Faktûra").Range("d22") = c Then
       Sheets("Darbinis").Range("O" & i) = Sheets("Sàskaita-Faktûra").Range("P3")  
    endif
next
End Sub 

如果 Sheets("Darbinis").Range("D1:D") 中的值相同,则一切都相同,但不加 +1。

提前谢谢你。 大流士

【问题讨论】:

标签: vba excel


【解决方案1】:

我找到了一个解决方案,由于 P3 单元格中的常规公式,它会添加 +1,但是如果我首先进行粘贴值移动并更改源位置,那么它可以工作,代码看起来:

Private Sub CommandButton2_Click()

Range("P3").Select
    Selection.Copy
    Range("P5").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

lastrow = Sheets("Darbinis").Cells(Sheets("Darbinis").Rows.Count, "D").End(xlUp).Row
Dim i
i = 0
For Each c In Sheets("Darbinis").Range("D1:D" & lastrow)
    i = i + 1
        If Sheets("Sàskaita-Faktûra").Range("d22") = c Then
       Sheets("Darbinis").Range("O" & i) = Sheets("Sàskaita-Faktûra").Range("P5").Value
    End If
Next
End Sub

然后它按预期工作。

【讨论】:

    【解决方案2】:

    实际上无法解决问题所在!错误消息或工作但未按预期工作?

    不确定是否有必要,但您的变量 lastRow 和 i 是整数。我会将它们转换为字符串以用于范围引用:即 from

    for each c in Sheets("Darbinis").Range("D1:D" & lastRow)
    

    for each c in Sheets("Darbinis").Range("D1:D" & CSTR(lastRow))
    

    【讨论】:

    • 保持不变,加+1
    猜你喜欢
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多