Excel 复制行并粘贴到最后一列的右侧
我有大约5000行数据。每行大约有20列数据,带有ID号。某些ID号在某些行上重复,因为它们是相关的。我需要将具有相同ID号的行中的数据放在另一张表上的一行中 拥有:Excel 复制行并粘贴到最后一列的右侧,excel,excel-formula,Excel,Excel Formula,我有大约5000行数据。每行大约有20列数据,带有ID号。某些ID号在某些行上重复,因为它们是相关的。我需要将具有相同ID号的行中的数据放在另一张表上的一行中 拥有: ID Date Data1 Data2 Data3 Data4 3 4/1/2012 6 12 9 7 3 4/2/2012 5 11 6 1 26 5/12/2014 3 9 5
ID Date Data1 Data2 Data3 Data4
3 4/1/2012 6 12 9 7
3 4/2/2012 5 11 6 1
26 5/12/2014 3 9 5 4
需要:
每行中有更多的列,因此每个粘贴是否可以查找第一个可用的空白列?欢迎使用so/SE!你有没有尝试过解决这个问题的方法?如果需要,请使用说明更新OP。尝试下面的步骤,希望它们对你有用。我已经使用
ctrl
+t
将下面的格式设置为数据表,但是如果您愿意,可以将公式转换为R1C1
步骤1:添加3个辅助列
=COUNTIFS([ID],@ID])
=ROW()
=IF([@IdCount]>1,IFERROR(聚合(15,6,[RowNum]/([RowNum]>[@RowNum])*([ID]=[@ID])),1),“”),“”)和“”)
alt
+f11
打开VBA编辑器,插入模块,然后输入以下代码
Sub sanitize()
Dim NextRow As Range, RngTxt As String, NextRowNum As Integer
For Each c In Range("data[IdCount]")
ResetInnerLoop:
If c.Value > 1 Then
NextRowNum = c.Offset(0, 2).Value
RngTxt = "A" & CStr(NextRowNum) & ":F" & CStr(NextRowNum)
Range(RngTxt).Cut
c.Offset(0, 0).Select
ActiveCell.End(xlToRight).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Calculate
If c.Value > 1 Then GoTo ResetInnerLoop
End If
Next c
MsgBox "Success"
End Sub
编辑宏的第7行(RngTxt=“A”&CStr(NextRowNum)&“:F”&CStr(NextRowNum)
)以匹配您的特定表格(而不是:F
,使用最后的数据列)。这会留下一些空行,但可以通过筛选和删除轻松删除这些空行
请注意
您应该在运行宏之前复制工作簿,因为在运行宏之后,您将无法使用
ctrl
+z
撤消。希望这有帮助。如果是,请以成功/失败回答。祝你好运 欢迎来到SO/SE!你有没有尝试过解决这个问题的方法?如果需要,请使用说明更新OP。尝试下面的步骤,希望它们对你有用。我已经使用ctrl
+t
将下面的格式设置为数据表,但是如果您愿意,可以将公式转换为R1C1
步骤1:添加3个辅助列
=COUNTIFS([ID],@ID])
=ROW()
=IF([@IdCount]>1,IFERROR(聚合(15,6,[RowNum]/([RowNum]>[@RowNum])*([ID]=[@ID])),1),“”),“”)和“”)
alt
+f11
打开VBA编辑器,插入模块,然后输入以下代码
Sub sanitize()
Dim NextRow As Range, RngTxt As String, NextRowNum As Integer
For Each c In Range("data[IdCount]")
ResetInnerLoop:
If c.Value > 1 Then
NextRowNum = c.Offset(0, 2).Value
RngTxt = "A" & CStr(NextRowNum) & ":F" & CStr(NextRowNum)
Range(RngTxt).Cut
c.Offset(0, 0).Select
ActiveCell.End(xlToRight).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Calculate
If c.Value > 1 Then GoTo ResetInnerLoop
End If
Next c
MsgBox "Success"
End Sub
编辑宏的第7行(RngTxt=“A”&CStr(NextRowNum)&“:F”&CStr(NextRowNum)
)以匹配您的特定表格(而不是:F
,使用最后的数据列)。这会留下一些空行,但可以通过筛选和删除轻松删除这些空行
请注意
您应该在运行宏之前复制工作簿,因为在运行宏之后,您将无法使用ctrl
+z
撤消。希望这有帮助。如果是,请以成功/失败回答。祝你好运
Sub sanitize()
Dim NextRow As Range, RngTxt As String, NextRowNum As Integer
For Each c In Range("data[IdCount]")
ResetInnerLoop:
If c.Value > 1 Then
NextRowNum = c.Offset(0, 2).Value
RngTxt = "A" & CStr(NextRowNum) & ":F" & CStr(NextRowNum)
Range(RngTxt).Cut
c.Offset(0, 0).Select
ActiveCell.End(xlToRight).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Calculate
If c.Value > 1 Then GoTo ResetInnerLoop
End If
Next c
MsgBox "Success"
End Sub