我有两张纸
:数据库
宏工作表:它的一行带有日期,该日期将作为宏后面表格的标题。
目标:在宏表中获取第一个日期的值,并在数据库表中查找其位置。然后,在数据库表中,复制与先前复制的日期相对应的整列。
我了解该代码应如下所示:
Sheets("Macro").Select
Range("K3").Select
Selection.Copy
Sheets("Database").Select
Cells.Find(What:=Selection.PasteSpecial xlValues, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Macro").Select
ActiveSheet.Paste
此代码不起作用,因为搜索部分做得不好,我将感谢您进行一些纠正
答案 0 :(得分:1)
答案 1 :(得分:1)
在宏工作表中循环浏览标题日期。如果可以在“数据库”工作表的标题行中找到任何内容,则将该列复制到标题下的“宏”工作表中。
sub getDateData()
dim h as long, wsdb as worksheet, m as variant, arr as variant
set wsdb = worksheets("database")
with worksheets("macro")
for h=1 to .cells(1, .columns.count).end(xltoleft).column
m = application.match(.cells(1, h).value2, wsdb.rows(1), 0)
if not iserror(m) then
arr = wsdb.range(wsdb.cells(2, m), wsdb.cells(rows.count, m).end(xlup)).value
.cells(2, h).resize(ubound(arr, 1), ubound(arr, 2)) = arr
end if
next h
end with
end sub