如何从多个excel工作表中读取数据并基于列A合并数据
我与一些客户有n个excel文件,以及在安装、故障排除、交付等不同阶段花费的小时数 客户端、安装、故障排除、交付如何从多个excel工作表中读取数据并基于列A合并数据,excel,excel-2010,vba,Excel,Excel 2010,Vba,我与一些客户有n个excel文件,以及在安装、故障排除、交付等不同阶段花费的小时数 客户端、安装、故障排除、交付 78902110.5 与此类似,我在其他excel文件中也有客户机,但在其他文件中可能会有一些重复的客户机。现在我需要在一张表格中整理所有数据,但我不需要重复客户,而是在适当的列中总结所有的总小时数 我尝试了以下代码来帮助cloumn A获得唯一的客户端,但没有成功: Sub Combine_Workbooks_Select_Files() Dim MyPath As St
78902110.5 与此类似,我在其他excel文件中也有客户机,但在其他文件中可能会有一些重复的客户机。现在我需要在一张表格中整理所有数据,但我不需要重复客户,而是在适当的列中总结所有的总小时数
我尝试了以下代码来帮助cloumn A获得唯一的客户端,但没有成功:
Sub Combine_Workbooks_Select_Files()
Dim MyPath As String
Dim SourceRcount As Long, Fnum As Long
Dim mybook As Workbook, BaseWks As Worksheet
Dim sourceRange As Range, destrange As Range
Dim rnum As Long, CalcMode As Long
Dim SaveDriveDir As String
Dim FName As Variant
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
SaveDriveDir = CurDir
ChDirNet "C:\"
FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xl*), *.xl*", _
MultiSelect:=True)
If IsArray(FName) Then
Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
rnum = 1
For Fnum = LBound(FName) To UBound(FName)
Set mybook = Nothing
On Error Resume Next
Set mybook = Workbooks.Open(FName(Fnum))
On Error GoTo 0
If Not mybook Is Nothing Then
On Error Resume Next
With mybook.Worksheets(1)
Set sourceRange = .Range("A1:A25")
End With
If Err.Number > 0 Then
Err.Clear
Set sourceRange = Nothing
Else
If sourceRange.Columns.Count >= BaseWks.Columns.Count Then
Set sourceRange = Nothing
End If
End If
On Error GoTo 0
If Not sourceRange Is Nothing Then
SourceRcount = sourceRange.Rows.Count
If rnum + SourceRcount >= BaseWks.Rows.Count Then
MsgBox "Not enough rows in the sheet. "
BaseWks.Columns.AutoFit
mybook.Close savechanges:=False
GoTo ExitTheSub
Else
Set destrange = BaseWks.Range("A" & rnum)
With sourceRange
Set destrange = destrange. _
Resize(.Rows.Count, .Columns.Count)
End With
destrange.Value = sourceRange.Value
rnum = rnum + SourceRcount
End If
End If
mybook.Close savechanges:=False
End If
Next Fnum
BaseWks.Columns.AutoFit
End If
ExitTheSub:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = CalcMode
End With
ChDirNet SaveDriveDir
End Sub
将要重复数据消除的数据复制到已知范围内,然后可以使用
ActiveSheet.range(“$a$1:$a$22”)。RemoveDuplicates
要删除任何重复的数据“我尝试使用以下代码为cloumn a获取唯一的客户端,但不起作用”->什么不起作用?您是否逐行检查了代码以查看哪些代码不起作用?请更具体一点,我们可以帮助你更容易。现在,我完成了我的上述问题陈述。我现在有一个场景,在我的工作表中,我可能有相同的客户,在同一阶段有特定的时间,例如7658在安装中花费了5个小时,另一个7658在excel中,他也只在安装阶段花费了3个小时。现在我需要计算安装时间,并从工作表中删除一个客户端条目。我无法思考这个问题,因为我有很多问题,我必须将客户与在同一阶段花费的时间进行匹配并总结。有关此的任何帮助或指导。将客户列表复制到新工作表(和状态,如果需要单独合计状态小时数)。使用RemoveDuplicates
,然后您可以将totals单元格的公式更改为SUMIF
或SUMIFS
-将它们添加到一起以从不同的工作表中收集数据