VBA比较两个日期,然后将数据从一个工作表传输到新工作表和相关列

时间:2016-08-14 16:08:27

标签: excel vba excel-vba macros

过去几天我花了一个星期的时间来浏览网络,虽然我已接近我正在寻找的东西,并且所有应有的尊重意味着 - 我是一个新手而且所有这一切,似乎有很多代码周围但似乎有点过分杀死我需要的东西。所以现在,因为我实际上找不到我想要的东西,同时学习一些新东西,我现在发布我的问题,看看能否找到答案。

将所有in-cell if和vlookup语句放在一边 - 依此类推,我在一个我正在研究的项目中已经走得很远了,但已经遇到了一个小障碍来完成它。

从初始数据输入到在一张纸上收集数据的宏,然后在打印后 - 收集这些数据,然后在"转移"中排序到新订单。表准备好移动到最后一张表。

  

缩小差距!

在完成目前为止所做的一切之后,我需要能够将一小段代码放在一起,现在可以访问"转移"单,找到日期(" B6" [例如6月16日])并将其与另一张表中的相应表格进行匹配"年度"在行中(" B6:M6" [1月16日:12月16日]);结果将是;

Sub:lookup" Transfer"(" B6")=" Annual"(" G6"),复制内容"转移"(" B9:B128"),粘贴"年度"(G9:G128")。端

但是,我认为我的一些问题是基于工作簿正在进行的自动化程度,例如:转移(B6)和年度(B6:K6)日期基于不同的公式(变量),导致相同(值[Jun-16 // mmm-yy]

非常感谢您的帮助

JohnH

2 个答案:

答案 0 :(得分:0)

约翰,请尝试以下方法:

Sub copyToTransfer()

Dim rng As Range
Dim rngSource As Range
Dim rngTarget As Range

Set rngSource = ThisWorkbook.Sheets("Transfer").Range("B6")
Set rngTarget = ThisWorkbook.Sheets("Annual").Rows(6)

Set rng = rngTarget.Find(rngSource.Value, , xlValues)

If Not rng Is Nothing Then
    ThisWorkbook.Sheets(rngSource.Parent.Name).Range(rngSource.Offset(3).Address, rngSource.Offset(125).Address).Copy
    rng.Offset(3).PasteSpecial xlPasteAll
    Application.CutCopyMode = False
Else
    MsgBox "Date " & Format(rngSource.Value, "mmm-yy") & " not found in Annual sheet!"
End If

End Sub

答案 1 :(得分:0)

尽管Markos的答案有所帮助,并且它可以毫无错误地完成其循环,但似乎隐藏着一个问题,所以虽然我不想让他太唠叨,但我怀疑它涉及两个地方之一;

  
    

设置rngTarget = ThisWorkbook.Sheets(" Annual")。Rows(6)

         

设置rng = rngTarget.Find(rngSource.Value ,, xlValues)

  

虽然我可能错了,但理解的原因是,我创建了三个不同的工作簿,1。作为97-03版本,2。普通07版本和3. 07-macro启用版本,所有测试都来了回来;它找到它的来源并识别日期,但是当看到它的目标时,它正盯着一个空白页面!有没有其他人愿意做出贡献,或者能够找出问题?

约翰