① 用VBA编写合并多个工作表的数据到一张表中
Public Sub AutoCopy()
Dim MyPath As String
Dim MyName As String
Dim AllName() As String
Dim MyWB As Workbook
i = 0
Application.ScreenUpdating = False
MyPath = "C:\Users\Public\Documents\microsoft\test"
ActiveSheet.Range("A1") = "工号"
ActiveSheet.Range("B1") = "姓名"
ActiveSheet.Range("C1") = "工序"
If Right(MyPath, 1) <> "\" Then
MyPath = MyPath & "\"
End If
MyName = Dir(MyPath & "*.xlsx", 0)
Do While MyName <> ""
ReDim Preserve AllName(i)
AllName(i) = MyName
i = i + 1
MyName = Dir
Loop
For j = 0 To i - 1
If AllName(j) <> "" Then
'ActiveSheet.Cells(j + 1, 6) = AllName(j) & " " & j
Set MyWB = GetObject(MyPath & AllName(j))
ThisWorkbook.Sheets(1).Range("A" & ActiveSheet.Range("A65535").End(xlUp).Row + 1 & ":C" & _
ActiveSheet.Range("A65535").End(xlUp).Row + MyWB.Sheets(1).Range("D65535").End(xlUp).Row - 1).Value _
= MyWB.Sheets(1).Range("B2:D" & MyWB.Sheets(1).Range("D65535").End(xlUp).Row).Value
Workbooks(AllName(j)).Close
End If
Next j
Application.ScreenUpdating = True
End Sub
试试这个看 要把MyPath = "C:\Users\Public\Documents\microsoft\test"改成你自己的文件夹路径
② vba 几个单元格的数据拼凑成一个
Sub组合()
DimJGArr(),TopRow,EndRowAsVariant
DimRngAsRange,N,EndColAsLong
TopRow=Application.InputBox("输入首行号:","首行号输入",2,Type:=1)
EndRow=Application.InputBox("输入尾行号:","尾行号输入",2,Type:=1)
IfTopRow="False"OrEndRow="False"ThenExitSub
EndCol=Range("iv1").End(xlToLeft).Column
Fori=TopRowToEndRow
N=N+1
ReDimPreserveJGArr(1ToN)
Forj=1ToEndCol
IfCells(i,j)<>""Then
Ifj=2Then
temp=Left(Cells(i,j),Len(Cells(i,j))-1)
Else
temp=Cells(IIf(j>2,1,i),j)
EndIf
JGArr(N)=JGArr(N)&temp
EndIf
Next
Next
Sheet2.Range("A1")="组合第"&TopRow&"行-第"&EndRow&"行"
Sheet2.Range("A2").Resize(N,1)=WorksheetFunction.Transpose(JGArr)
EndSub
③ vba如何把两个代码合并成一个呢
如果是两个过程都要执行的话,都调用就行了,或者嵌套到一个里面然后调用一个
代码如下:
④ vba 通过数组将 两列数据合并成一列 并显示出来
用我下面的代码可以满足你的需求:
OptionExplicit
SubYgB()
Dimarr1,arr2
arr1=Range(Cells(1,1),Cells(Rows.Count,1).End(xlUp))
arr2=Range(Cells(1,2),Cells(Rows.Count,2).End(xlUp))
Cells(Rows.Count,4).End(xlUp).Offset(1,0).Resize(UBound(arr1),1)=arr1
Cells(Rows.Count,4).End(xlUp).Offset(1,0).Resize(UBound(arr2),1)=arr2
EndSub
第一步获得A、B列的内容到数组,原理和你的基本相同,区别是我使用Rows.count代替你的65536,可以确保在能支持100多万行的新版本下正确运行,另外我使用cells(1,1)代替range("a1")理论上速度好一点点。
第二步把数组存放在D列的下一个可用单元格,我是直接输出的,没有使用新的数组。
⑤ EXCEL里VBA问题请教,如何把两个表格的数据相互融合,用代码怎么表示谢谢
用下面处理方法
多行一表法
⑥ Excel 如何用VBA将多列内容合并为一列的内容
1、用VBA读出没列数据
2、汇合到一个表格中。
3、读出的数据可以暂时存到数组中。
4、网络一下会有很多代码。
⑦ vba 如何合并数据
for x=1 to 10
for y=y to 10 step 2
cells(x,y)=cells(x,y) &cells(x,y+1)
next y
next x
⑧ VBA在excel 表中如何将两个单元格内容写入到一个单元格并且用/分隔
代码类似于
sheet2.Range("C1")=sheet1.Range("A1") & "/" & sheet1.Range("B1")
⑨ 把两列并在一起,vba代码该怎么编写
sub a()
dim brr()
arr=[a1].currentregion
redim brr(1 to ubound(arr,1))
for i=1 to ubound(arr,1)
brr(i)=arr(i,1) & arr(i,2)
next
[a1].resize(ubound(brr,1)=application.transpose(brr)
end sub
这个没必要用vba吧,C列公式=a1 & b1, 下拉,然后,复制》选择性粘贴把A列覆盖掉就好了啊?
⑩ 如何用VBA将Excel某列任意两个单元格的内容合并显示到行单元格
C2公式:
=B2&IFERROR(","&VLOOKUP(A2,A3:C1000,3,0),"")