【问题标题】:Copy rows based on cell value and paste on a new sheet根据单元格值复制行并粘贴到新工作表上
【发布时间】:2017-01-21 18:05:03
【问题描述】:

检查一下

我需要帮助。仅当 C 列中的值大于 0 时,我才想将整个单元格从工作表名称“组件”复制到新的工作表名称“加载列表”

谁能给我这个宏代码?

【问题讨论】:

标签: vba excel excel-formula excel-2016


【解决方案1】:

在您的新工作表上,您可以将此条件添加到单元格或单元格范围:

=IF(Components!C5>0,Components!A5)

其中 C5 具有要比较的值,如果条件发生,A5 具有值副本。

【讨论】:

  • 但是如果Components!C5<=0,该公式复制了一些东西(值False),这不是OP所要求的。
【解决方案2】:

就在我的挥杆中!

@sweetkaos 给出的公式可以正常工作,以防您想复制数据,因为它带有未找到数据的空白。

我会想象一个稍微复杂一点的情况。我假设您只需要下一种格式的一行,如图所示。

还方便地假设以下内容: 一种。两张表都有固定的列表起点 湾。 2 列列表 - 被复制和粘贴,第二列有值 C。连续,无中断源列表 d。 vba基础知识,可以重构代码

这里是代码。请尝试逐行理解它。快乐卓越!

Sub populateLoadList()    
'declaring range type variables
Dim rngStartFirstList As Range, rngStartLoadList As Range

'setting values to the range variables
'you must change the names of the sheets and A1 to the correct starts of your two lists

Set rngStartFirstList = Worksheets("Name_of_your_fist_sheet").Range("A1")

Set rngStartLoadList = Worksheets("Name_of_your_second_sheet").Range("A1")


Do While rngStartFirstList.Value <> ""
  If rngStartFirstList.Offset(1, 0).Value < 0 Then

     Range(rngStartFirstList, rngStartFirstList.Offset(0, 1)).Copy      

     rngStartLoadList.PasteSpecial xlPasteValues

     Application.CutCopyMode = False

     Set rngStartLoadList = rngStartLoadList.Offset(1, 0)

   End If

   Set rngStartFirstList = rngStartFirstList.Offset(1, 0)

Loop
End Sub

【讨论】:

  • 你的一半Offset(1, 0)s 应该是Offset(0, 1)s(或者,更可能基于问题,Offset(0, 2)s)
  • 您应该将rngStartFirstList 声明为Range 而不是Variant。 (它仍然可以按原样工作,但通常更好的做法是将变量显式声明为适当的类型,而不是将它们设置为Variant。)并且Range(rngStartFirstList, ... 应该是Worksheets("Name_of_your_fist_sheet").Range(rngStartFirstList, ...,以避免代码在“ Name_of_your_fist_sheet" 不是活动工作表。
  • @YowE3K 谢谢,复制语句中有一个错字,变量声明中有一个错误的假设
【解决方案3】:

基本上我想要的是...如果 C 上的值 >0 我希望将整个第 10 列复制到该新工作表 .... 不仅是那个单元格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多