我有一个电子表格,记录合唱团排练的音乐作品的日期。列A列出工作,列C,D等日期。我将数字1放在与工作和日期相对应的单元格中。例如
A B C D E
1 05 Jan 12 Jan 19 Jan
2 Song 1 1
3 Song 2 1 1 1
4 Song 3 1 1
我运行歌曲排练次数的简单总数,但希望自动将歌曲最后一次排练的日期,即歌曲2“12月1日”复制到B栏。电子表格包含许多日期列和200多首歌曲。
下面的宏适用于歌曲1和2,但是当它从单元格E3返回图1时不适用于歌曲
键盘快捷键:Ctrl + a
ActiveCell.Select
Selection.End(xlToLeft).Select
Selection.End(xlUp).Select
Selection.Copy
Range("L2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("L13").Select
End Sub
如何修改它以适用于每首歌?我很感激你的建议。
答案 0 :(得分:1)
这是一个选项:
Sub Test2()
Dim RngFind As Range
Dim x As Integer
Dim y As Integer
'Set a range, either hard-code it in like I did or use a named range
Set RngFind = Sheets(1).Range("C2:E4")
'iterate through each row and column and capy date in column of last cell with a value
'It takes the date from the top row and the same column. You can use "1" or "X" or something else
'in the range for tracking when the song was rehearsed
For y = RngFind.Row To (RngFind.Row + RngFind.Rows.Count)
For x = RngFind.Column To (RngFind.Column + RngFind.Columns.Count)
If Sheets(1).Cells(y, x).Value <> "" Then Sheets(1).Cells(y, "B").Value = Sheets(1).Cells(1, x).Value
Next x
Next y
End Sub
答案 1 :(得分:0)
看起来Song 2是在1月19日,而不是1月12日的最后一次排练。你还说你想把日期放在B栏,但这不是你的代码所做的。无论如何,如果你想要col B中的最后一个排练数据,但这个公式在B2
=INDEX(C$1:E$1,1,MATCH(2,C2:E2,TRUE))
并填写你所拥有的许多歌曲。另外,根据您拥有的日期数量调整E参考。
当你的所有数据都是1时,尝试匹配2将给你列表中的最后一个'1'。然后,您可以将该位置提供给INDEX函数,以从第1行获取该日期。