首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VBA中,如何创建一个代码,它将两个工作表中的日期相匹配,并将数据粘贴到该匹配日期作为值?不能使用vlookup

在VBA中,如何创建一个代码,它将两个工作表中的日期相匹配,并将数据粘贴到该匹配日期作为值?不能使用vlookup
EN

Stack Overflow用户
提问于 2016-09-05 23:03:18
回答 1查看 212关注 0票数 0

所以我有两个表格在Excel,计算器和结果表。

在计算器表上,单元格A1具有当前日期。在结果表中,单元格A2:无穷大的日期随着时间的增加而增加。

我正在编写一个程序,如果来自计算器工作表的单元格A1等于结果表中的单元格A2:无穷大,它将将数据单元格范围C2:C7从计算器表复制到结果表上的匹配日期,以将数据单元格范围(B:G)的值转换为

VLOOKUP无法工作,因为以前的数据会因为日期的更改而消失。

结果单

计算器表

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-06 06:49:45

您可以尝试以下代码:

代码语言:javascript
复制
Option Explicit

Sub main()
    Dim f As Range, calculatorData As Range
    Dim dateStrng As String

    With Worksheets("Calculator") '<--| reference "Calculator" worksheet
        Set calculatorData = .Range("C2:C7") '<--| set its range with data to be copied
        dateStrng = .Range("A1").value '<-- retrieve the date to be searched
    End With

    With Worksheets("Results") '<--| reference "Results" worksheet
        Set f = .Range("A2", .Range("A2").End(xlDown)).Find(what:=dateStrng, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False) '<-- look for searched data in its column "A" cells from row 2 down to last contiguous non empty cell
    End With

    If Not f Is Nothing Then f.Offset(, 1).Resize(, 6).value = Application.Transpose(calculatorData.value) '<--| if date is found then copy relevant values from "Calculator" next to it
End Sub

编辑:

如果excel工作表中的日期不是String值而是实际的Date值,那么只需更改:

代码语言:javascript
复制
dateStrng = .Range("A1").value '<-- retrieve the date to be searched

转入:

代码语言:javascript
复制
dateStrng = WorksheetFunction.Text(.Range("A1").value, "[$-409]mmmm,dd-yyyy;@") '<-- retrieve the date to be searched in the proper language (e.g.: 409 = English)

您可以找到所有语言代码这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39338620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档