Excel 可乐和可乐中的重复值
有一个小错误,但我还是不想让它出现。这是单个生成记录的屏幕截图。正如您在文件路径中看到的,在B列中是用户数据(姓名、姓氏、地址等),而在其他列(C、D、E、F等)中是特定数据。 现在,首先,我不知道为什么路径会重复,重复的行数等于B列使用的行总数,最重要的是,我不知道为什么B列的数据也会部分复制到C列 这是密码Excel 可乐和可乐中的重复值,excel,vba,Excel,Vba,有一个小错误,但我还是不想让它出现。这是单个生成记录的屏幕截图。正如您在文件路径中看到的,在B列中是用户数据(姓名、姓氏、地址等),而在其他列(C、D、E、F等)中是特定数据。 现在,首先,我不知道为什么路径会重复,重复的行数等于B列使用的行总数,最重要的是,我不知道为什么B列的数据也会部分复制到C列 这是密码 Option Explicit Sub MergeCode1() Dim BaseWks As Worksheet Dim rnum As Long Dim
Option Explicit
Sub MergeCode1()
Dim BaseWks As Worksheet
Dim rnum As Long
Dim MySplit As Variant
Dim Mybook As Workbook
Dim src1 As Range, src2 As Range, src3 As Range, src4 As Range, src5 As Range, src6 As Range, src7 As Range, src8 As Range, src9 As Range, src10 As Range, src11 As Range
Dim destrange As Range
Dim Rcount As Long
Dim f
'Add a new workbook with one sheet
Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
BaseWks.Range("A1").Font.Size = 36
BaseWks.Range("A1").Value = "Please Wait"
rnum = 3
MyFiles = ""
Call GetFilesOnMacWithOrWithoutSubfolders(Level:=1, ExtChoice:=0, _
FileFilterOption:=0, FileNameFilterStr:="")
If MyFiles <> "" Then
MySplit = Split(MyFiles, Chr(13))
For Each f In MySplit
Set Mybook = Workbooks.Open(f)
Set src1 = Mybook.Worksheets(1).Range("C10:C14")
Set src2 = Mybook.Worksheets(1).Range("A11:A11")
Set src3 = Mybook.Worksheets(1).Range("A16:A16")
Set src4 = Mybook.Worksheets(1).Range("C16:C16")
Set src5 = Mybook.Worksheets(1).Range("D16:D16")
Set src6 = Mybook.Worksheets(1).Range("E16:E16")
Set src7 = Mybook.Worksheets(1).Range("D17:D17")
Set src8 = Mybook.Worksheets(1).Range("E17:E17")
Set src9 = Mybook.Worksheets(1).Range("D18:D18")
Set src10 = Mybook.Worksheets(1).Range("D19:D19")
Set src11 = Mybook.Worksheets(1).Range("D20:D20")
'max # of rows to be added...
Rcount = Application.Max(src1.Rows.Count, src2.Rows.Count, src3.Rows.Count, src4.Rows.Count, src5.Rows.Count, src6.Rows.Count, src7.Rows.Count, src8.Rows.Count, src9.Rows.Count, src10.Rows.Count, src11.Rows.Count)
If rnum + Rcount >= BaseWks.Rows.Count Then
MsgBox "Sorry there are not enough rows in the sheet"
Mybook.Close savechanges:=False
Exit For
Else
BaseWks.Cells(rnum, "A").Resize(Rcount).Value = f
BaseWks.Cells(rnum, "B").Resize(src1.Rows.Count, _
src1.Columns.Count).Value = src1.Value
BaseWks.Cells(rnum, "B").Offset(0, src1.Columns.Count) _
.Resize(src1.Rows.Count, src1.Columns.Count).Value = src1.Value
BaseWks.Cells(rnum, "C").Resize(src2.Rows.Count, _
src2.Columns.Count).Value = src2.Value
BaseWks.Cells(rnum, "C").Offset(0, src2.Columns.Count) _
.Resize(src2.Rows.Count, src2.Columns.Count).Value = src2.Value
BaseWks.Cells(rnum, "D").Resize(src3.Rows.Count, _
src3.Columns.Count).Value = src3.Value
BaseWks.Cells(rnum, "D").Offset(0, src3.Columns.Count) _
.Resize(src3.Rows.Count, src3.Columns.Count).Value = src3.Value
BaseWks.Cells(rnum, "E").Resize(src4.Rows.Count, _
src4.Columns.Count).Value = src4.Value
BaseWks.Cells(rnum, "E").Offset(0, src4.Columns.Count) _
.Resize(src4.Rows.Count, src4.Columns.Count).Value = src4.Value
BaseWks.Cells(rnum, "F").Resize(src5.Rows.Count, _
src5.Columns.Count).Value = src5.Value
BaseWks.Cells(rnum, "F").Offset(0, src5.Columns.Count) _
.Resize(src5.Rows.Count, src5.Columns.Count).Value = src5.Value
BaseWks.Cells(rnum, "G").Resize(src6.Rows.Count, _
src6.Columns.Count).Value = src6.Value
BaseWks.Cells(rnum, "G").Offset(0, src6.Columns.Count) _
.Resize(src6.Rows.Count, src6.Columns.Count).Value = src6.Value
BaseWks.Cells(rnum, "H").Resize(src7.Rows.Count, _
src7.Columns.Count).Value = src7.Value
BaseWks.Cells(rnum, "H").Offset(0, src7.Columns.Count) _
.Resize(src7.Rows.Count, src7.Columns.Count).Value = src7.Value
BaseWks.Cells(rnum, "I").Resize(src8.Rows.Count, _
src8.Columns.Count).Value = src8.Value
BaseWks.Cells(rnum, "I").Offset(0, src8.Columns.Count) _
.Resize(src8.Rows.Count, src8.Columns.Count).Value = src8.Value
BaseWks.Cells(rnum, "J").Resize(src9.Rows.Count, _
src9.Columns.Count).Value = src9.Value
BaseWks.Cells(rnum, "J").Offset(0, src9.Columns.Count) _
.Resize(src9.Rows.Count, src9.Columns.Count).Value = src9.Value
BaseWks.Cells(rnum, "K").Resize(src10.Rows.Count, _
src10.Columns.Count).Value = src10.Value
BaseWks.Cells(rnum, "K").Offset(0, src10.Columns.Count) _
.Resize(src10.Rows.Count, src10.Columns.Count).Value = src10.Value
BaseWks.Cells(rnum, "L").Resize(src11.Rows.Count, _
src11.Columns.Count).Value = src11.Value
BaseWks.Cells(rnum, "L").Offset(0, src11.Columns.Count) _
.Resize(src11.Rows.Count, src11.Columns.Count).Value = src11.Value
rnum = rnum + Rcount
End If
Mybook.Close savechanges:=False
Next f
BaseWks.Columns.AutoFit
End If
BaseWks.Range("A1").Value = "Ready"
End Sub
选项显式
子代码1()
将基线设置为工作表
暗淡如长
Dim MySplit作为变体
将Mybook设置为工作簿
尺寸src1为量程,src2为量程,src3为量程,src4为量程,src5为量程,src6为量程,src7为量程,src8为量程,src9为量程,src10为量程,src11为量程
变暗减小范围为范围
暗计数等于长
暗f
'添加带有一张工作表的新工作簿
Set BaseWks=工作簿。添加(XLWBATWORKEM)。工作表(1)
BaseWks.Range(“A1”).Font.Size=36
BaseWks.Range(“A1”).Value=“请稍候”
rnum=3
MyFiles=“”
调用GetFilesOnMacWither或WitherOutSubFolders(级别:=1,ExtChoice:=0_
FileFilterOption:=0,FileNameFilterStr:=“”)
如果我的文件是“”,那么
MySplit=Split(MyFiles,Chr(13))
对于MySplit中的每个f
设置Mybook=工作簿。打开(f)
设置src1=Mybook.Worksheets(1).Range(“C10:C14”)
设置src2=Mybook.Worksheets(1).Range(“A11:A11”)
设置src3=Mybook.Worksheets(1).Range(“A16:A16”)
Set src4=Mybook.Worksheets(1).Range(“C16:C16”)
Set src5=Mybook.Worksheets(1).Range(“D16:D16”)
设置src6=Mybook.Worksheets(1).Range(“E16:E16”)
设置src7=Mybook.Worksheets(1).Range(“D17:D17”)
设置src8=Mybook.Worksheets(1).Range(“E17:E17”)
设置src9=Mybook.Worksheets(1).Range(“D18:D18”)
设置src10=Mybook.Worksheets(1).Range(“D19:D19”)
Set src11=Mybook.Worksheets(1).Range(“D20:D20”)
“要添加的最大行数…”。。。
Rcount=Application.Max(src1.Rows.Count、src2.Rows.Count、src3.Rows.Count、src4.Rows.Count、src5.Rows.Count、src6.Rows.Count、src7.Rows.Count、src8.Rows.Count、src9.Rows.Count、src10.Rows.Count、src11.Rows.Count)
如果rnum+Rcount>=BaseWks.Rows.Count,则
MsgBox“很抱歉,工作表中的行数不足”
Mybook.Close savechanges:=False
退出
其他的
BaseWks.Cells(rnum,“A”).Resize(Rcount).Value=f
BaseWks.Cells(rnum,“B”).Resize(src1.Rows.Count_
src1.Columns.Count).Value=src1.Value
BaseWks.Cells(rnum,“B”).Offset(0,src1.Columns.Count)_
.Resize(src1.Rows.Count,src1.Columns.Count).Value=src1.Value
BaseWks.Cells(rnum,“C”).Resize(src2.Rows.Count_
src2.Columns.Count).Value=src2.Value
BaseWks.Cells(rnum,“C”).Offset(0,src2.Columns.Count)_
.Resize(src2.Rows.Count,src2.Columns.Count).Value=src2.Value
BaseWks.Cells(rnum,“D”).Resize(src3.Rows.Count_
src3.Columns.Count).Value=src3.Value
BaseWks.Cells(rnum,“D”).Offset(0,src3.Columns.Count)_
.Resize(src3.Rows.Count,src3.Columns.Count).Value=src3.Value
BaseWks.Cells(rnum,“E”).Resize(src4.Rows.Count_
src4.Columns.Count).Value=src4.Value
BaseWks.Cells(rnum,“E”).Offset(0,src4.Columns.Count)_
.Resize(src4.Rows.Count,src4.Columns.Count).Value=src4.Value
BaseWks.Cells(rnum,“F”).Resize(src5.Rows.Count_
src5.Columns.Count).Value=src5.Value
BaseWks.Cells(rnum,“F”).Offset(0,src5.Columns.Count)_
.Resize(src5.Rows.Count,src5.Columns.Count).Value=src5.Value
BaseWks.Cells(rnum,“G”).Resize(src6.Rows.Count_
src6.Columns.Count).Value=src6.Value
BaseWks.Cells(rnum,“G”).Offset(0,src6.Columns.Count)_
.Resize(src6.Rows.Count,src6.Columns.Count).Value=src6.Value
BaseWks.Cells(rnum,“H”).Resize(src7.Rows.Count_
src7.Columns.Count).Value=src7.Value
BaseWks.Cells(rnum,“H”).Offset(0,src7.Columns.Count)_
.Resize(src7.Rows.Count,src7.Columns.Count).Value=src7.Value
BaseWks.Cells(rnum,“I”).Resize(src8.Rows.Count_
src8.Columns.Count).Value=src8.Value
BaseWks.Cells(rnum,“I”).Offset(0,src8.Columns.Count)_
.Resize(src8.Rows.Count,src8.Columns.Count).Value=src8.Value
BaseWks.Cells(rnum,“J”).Resize(src9.Rows.Count_
src9.Columns.Count).Value=src9.Value
BaseWks.Cells(rnum,“J”).Offset(0,src9.Columns.Count)_
.Resize(src9.Rows.Count,src9.Columns.Count).Value=src9.Value
BaseWks.Cells(rnum,“K”).Resize(src10.Rows.Count_
src10.Columns.Count).Value=src10.Value
BaseWks.Cells(rnum,“K”).Offset(0,src10.Columns.Count)_
.Resize(src10.Rows.Count,src10.Columns.Count).Value=src10.Value
BaseWks.Cells(rnum,“L”).Resize(src11.Rows.Count_
src11.C
Sub MergeCode1()
Dim MyBook As Workbook
Dim BaseWks As Worksheet
Dim Rnum As Long
Dim MySplit As Variant
Dim Src(1 To 11) As Range ' src1 becomes Src(1) etc
Dim DestRange As Range
Dim Rcount As Long
Dim f As Variant
Dim MyFiles As String
Dim Ranges() As String
Dim i As Integer
Dim Tmp As Variant
'Add a new workbook with one sheet
Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
BaseWks.Range("A1").Font.Size = 36
BaseWks.Range("A1").Value = "Please Wait"
MyFiles = ""
Call GetFilesOnMacWithOrWithoutSubfolders( _
Level:=1, ExtChoice:=0, _
FileFilterOption:=0, _
FileNameFilterStr:="")
' not clear where MyFiles might get a value from
If MyFiles <> "" Then
MySplit = Split(MyFiles, Chr(13))
Ranges = Split("C10:C14,A11,A16,C16,D16,E16,D17,E17,D18,D19,D20", ",")
Rnum = 3
For Each f In MySplit
Set MyBook = Workbooks.Open(f)
With MyBook.Worksheets(1)
For i = LBound(Src) To UBound(Src)
Set Src(i) = .Range(Ranges(i - 1))
Rcount = Application.Max(Rcount, Src(i).Rows.Count)
Next i
End With
If Rnum + Rcount >= BaseWks.Rows.Count Then
MsgBox "Sorry there are not enough rows in the sheet"
MyBook.Close SaveChanges:=False
Exit For
Else
With BaseWks
' this command fills several rows in columns A with f
'.Cells(Rnum, "A").Resize(Rcount).Value = f
.Cells(Rnum, "A").Value = f
.Cells(Rnum, "B").Resize(Src(1).Rows.Count, _
Src(1).Columns.Count).Value = Src(1).Value
' this command writes the same value as above to the next column:-
'.Cells(Rnum, "B").Offset(0, Src(1).Columns.Count) _
' .Resize(Src(1).Rows.Count, Src(1).Columns.Count).Value = Src(1).Value
' All ranges from Src(2) and up have a single row and single column
' Therefore, in the following Resizing can be omitted and
' .Offset(0, Src(2).Columns.Count) can be hard-coded as .Offset(0, 1)
' which writes the same value to the next column.
' .Cells(Rnum, "C").Resize(Src(2).Rows.Count, _
' Src(2).Columns.Count).Value = Src(2).Value
' revised:-
.Cells(Rnum, "C").Value = Src(2).Value
' The command below writes the same value as above to the next column:-
'.Cells(Rnum, "C").Offset(0, Src(2).Columns.Count) _
' .Resize(Src(2).Rows.Count, Src(2).Columns.Count).Value = Src(2).Value
' revised:-
'.Cells(Rnum, "C").Offset(0, 1).Value = Src(2).Value
' .Cells(Rnum, "D").Resize(Src(3).Rows.Count, _
' Src(3).Columns.Count).Value = Src(3).Value
' The command below writes the same value as above to the next column:-
' .Cells(Rnum, "D").Offset(0, Src(3).Columns.Count) _
' .Resize(Src(3).Rows.Count, Src(3).Columns.Count).Value = Src(3).Value
.Cells(Rnum, "E").Value = Src(4).Value
' The command below writes the same value as above to the next column:-
'.Cells(Rnum, "E").Offset(0, Src(4).Columns.Count) _
' .Resize(Src(4).Rows.Count, Src(4).Columns.Count).Value = Src(4).Value
.Cells(Rnum, "F").Value = Src(5).Value
' The command below writes the same value as above to the next column:-
'.Cells(Rnum, "F").Offset(0, Src(5).Columns.Count) _
' .Resize(Src(5).Rows.Count, Src(5).Columns.Count).Value = Src(5).Value
.Cells(Rnum, "G").Value = Src(6).Value
' The command below writes the same value as above to the next column:-
'.Cells(Rnum, "G").Offset(0, Src(6).Columns.Count) _
' .Resize(Src(6).Rows.Count, Src(6).Columns.Count).Value = Src(6).Value
.Cells(Rnum, "H").Value = Src(7).Value
' The command below writes the same value as above to the next column:-
'.Cells(Rnum, "H").Offset(0, Src(7).Columns.Count) _
' .Resize(Src(7).Rows.Count, Src(7).Columns.Count).Value = Src(7).Value
.Cells(Rnum, "I").Value = Src(8).Value
' The command below writes the same value as above to the next column:-
'.Cells(Rnum, "I").Offset(0, Src(8).Columns.Count) _
' .Resize(Src(8).Rows.Count, Src(8).Columns.Count).Value = Src(8).Value
.Cells(Rnum, "J").Value = Src(9).Value
' The command below writes the same value as above to the next column:-
'.Cells(Rnum, "J").Offset(0, Src(9).Columns.Count) _
' .Resize(Src(9).Rows.Count, Src(9).Columns.Count).Value = Src(9).Value
.Cells(Rnum, "K").Value = Src(10).Value
' The command below writes the same value as above to the next column:-
'.Cells(Rnum, "K").Offset(0, Src(10).Columns.Count) _
' .Resize(Src(10).Rows.Count, Src(10).Columns.Count).Value = Src(10).Value
.Cells(Rnum, "L").Value = Src(11).Value
' The command below writes the same value as above to the next column:-
'.Cells(Rnum, "L").Offset(0, src(11).Columns.Count) _
' .Resize(src(11).Rows.Count, src(11).Columns.Count).Value = src(11).Value
End With
Rnum = Rnum + Rcount
End If
MyBook.Close SaveChanges:=False
Next f
BaseWks.Columns.AutoFit
End If
BaseWks.Range("A1").Value = "Ready"
End Sub
BaseWks.Cells(Rnum, "A").Value = f
BaseWks.Cells(Rnum, "B").Resize(src1.Rows.Count, _
src1.Columns.Count).Value = src1.Value
'BaseWks.Cells(Rnum, "B").Offset(0, src1.Columns.Count) _
.Resize(src1.Rows.Count, src1.Columns.Count).Value = src1.Value
BaseWks.Cells(Rnum, "C").Value = src2.Value
BaseWks.Cells(Rnum, "D").Value = src3.Value
'BaseWks.Cells(Rnum, "D").Offset(0, src3.Columns.Count) _
.Resize(src3.Rows.Count, src3.Columns.Count).Value = src3.Value