所以我有两个表格在Excel,计算器和结果表。
在计算器表上,单元格A1具有当前日期。在结果表中,单元格A2:无穷大的日期随着时间的增加而增加。
我正在编写一个程序,如果来自计算器工作表的单元格A1等于结果表中的单元格A2:无穷大,它将将数据单元格范围C2:C7从计算器表复制到结果表上的匹配日期,以将数据单元格范围(B:G)的值转换为
VLOOKUP无法工作,因为以前的数据会因为日期的更改而消失。
结果单
计算器表
任何帮助都将不胜感激!
发布于 2016-09-06 06:49:45
您可以尝试以下代码:
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值,那么只需更改:
dateStrng = .Range("A1").value '<-- retrieve the date to be searched转入:
dateStrng = WorksheetFunction.Text(.Range("A1").value, "[$-409]mmmm,dd-yyyy;@") '<-- retrieve the date to be searched in the proper language (e.g.: 409 = English)您可以找到所有语言代码这里。
https://stackoverflow.com/questions/39338620
复制相似问题