复制不同纸张的最后一列,然后合并成一张纸

首先,对于我的英语和电脑技能不好,感到抱歉。 我正在为一些学校团队(> 50)参加一个Excel的工作。 每个小组都有自己的表格来参加。 每个队有不同的训练date和数量。 我试图把所有来自不同工作表的数据合并成一个,然后我做了。 但问题是我想检查前一天训练的球队的出勤率。 由于训练date和人数不同,不同队伍的出勤logging出现在不同的栏目上。 我只是试图要求所有的团队在一个特定的地方插入一个新的列出席考勤。 但我希望我能用“Lastcolumn”或其他方法解决这个愚蠢的问题。

我愚蠢的解决scheme:1,结合所有表
2,清除除最新更新的数据外的所有数据3,过滤“ABS”4,select昨天由人进行培训的队伍

Sheets(Sheets.Count).Select Range("A1").Select For i = 1 To Sheets.Count - 2 Sheets(i).Select Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Application.CutCopyMode = False Selection.Copy Sheets(Sheets.Count - 1).Select lastrow = Cells(1, 1).End(xlDown).Row Range("A" & (lastrow + 1)).Select ActiveSheet.Paste Next i ' ' Columns("F:BB").Select Selection.ClearContents Range("A4:E4").Select Selection.AutoFilter ActiveSheet.Range("$A$4:$E$37").AutoFilter Field:=5, Criteria1:="ABS" End Sub 

如果您可以粘贴出席表单所在的格式,将帮助我们回答您的问题。 但是,似乎这个解决scheme可能工作。

更换线路

 Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Application.CutCopyMode = False 

在你的代码中

 Selection.End(xlToRight).Select Range(Selection, Selection.End(xlDown)).Select 

假设行A中的所有单元格对要复制的列都有一个值。

当然,您可以使用“范围对象”同时select两个范围。

插入代码的顶部;

 Dim rng1, rng2, rngCombo As Range 

然后修改;

 Selection.End(xlToRight).Select Range(Selection, Selection.End(xlDown)).Select Set rng1 = Selection Set rng2 = Range("A4:E4") Set rngCombo = Union(rng1, rng2) rngCombo.Select 

希望这有助于! 如果它做了一个投票,将不胜感激!