Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多个Excel文件vba中统计数据_Vba_Excel - Fatal编程技术网

在多个Excel文件vba中统计数据

在多个Excel文件vba中统计数据,vba,excel,Vba,Excel,我在一个文件夹中有多个xls文件 在帮助工作表的G:G列中,它有O、R等数据 我想分别计算O,R的总数,并将其放入excel表格中 我有这个代码,请帮助它不执行循环也 Private Sub CommandButton2_Click() Dim CSVfolder As String, _ Xlsfolder As String, _ fname As String, _ wbook As Workbook, _ SRange As Range, _

我在一个文件夹中有多个xls文件

在帮助工作表的G:G列中,它有O、R等数据

我想分别计算O,R的总数,并将其放入excel表格中

我有这个代码,请帮助它不执行循环也

    Private Sub CommandButton2_Click()

Dim CSVfolder As String, _
    Xlsfolder As String, _
    fname As String, _
    wbook As Workbook, _
    SRange As Range, _
    k As Integer

Xlsfolder = "C:\Users\sam\Desktop\macro\macro\macro"

fname = Dir(Xlsfolder & "*.xls")
k = 5
Do While fnmae <> ""
Workbooks.Open (fnamme)

Set SRange = Workbooks(fname).Worksheets("Findings").Range("G:G")
Cells(3, k) = Application.CountIf(SRange, "O")
Cells(4, k) = Application.CountIf(SRange, "Cd")
Cells(5, k) = Application.CountIf(SRange, "Cr")
Cells(6, k) = Application.CountIf(SRange, "Cn")
Cells(7, k) = Application.CountIf(SRange, "A")
Cells(8, k) = Application.CountIf(SRange, "Cf")

Workbooks(fname).Close

Loop
End Sub
Private子命令按钮2\u单击()
将CSVfolder设置为字符串_
Xlsfolder作为字符串_
fname作为字符串_
wbook作为工作簿_
作为范围_
k为整数
Xlsfolder=“C:\Users\sam\Desktop\macro\macro\macro”
fname=Dir(Xlsfolder&“*.xls”)
k=5
当fnmae“”时执行
工作簿。打开(fnamme)
设置SRange=工作簿(fname).工作表(“调查结果”).范围(“G:G”)
单元格(3,k)=应用程序计数(SRange,“O”)
单元格(4,k)=Application.CountIf(SRange,“Cd”)
单元格(5,k)=应用程序计数(SRange,“Cr”)
单元格(6,k)=Application.CountIf(SRange,“Cn”)
单元格(7,k)=Application.CountIf(SRange,“A”)
单元格(8,k)=Application.CountIf(SRange,“Cf”)
工作簿(fname)。关闭
环
端接头

您可以做一些非常简单的事情,比如这样

=('NAME_OF__SHEET'!A1)

NAME_OF__SHEET = "the name of your sheet" A1 = column, row

and your done!
当然,也可以使用VBA将多个文件中的数据导入到一个工作表中,并在其中进行处理

Sub combine()

    Dim app As New Excel.Application
    app.Visible = False

    Dim wbM As Workbook
    Set wbM = Workbooks("main")

    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    fd.AllowMultiSelect = True
    Files = fd.Show

    For i = 1 To fd.SelectedItems.Count
        app.Workbooks.Open fd.SelectedItems(i)
    Next i

    Dim wb As Workbook
    For Each wb In app.Workbooks
        If wb.Name <> "main.xlsm" Then
            Dim wsN As Worksheet
            Set wsN = wbM.Sheets.Add(after:=wbM.Sheets(wbM.Sheets.Count))
            wsN.Name = wb.Name

            wbM.Sheets(wb.Name).Range("A1:K1").Value = wb.Sheets(1).Range("A1:K1").Value

            wb.Close SaveChanges:=False
        End If
    Next

    app.Quit
    Set app = Nothing

End Sub
子联合收割机()
Dim应用程序作为新的Excel.Application
app.Visible=False
将wbM设置为工作簿
设置wbM=工作簿(“主”)
将fd设置为文件对话框
Set fd=Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect=True
Files=fd.Show
对于i=1到fd.SelectedItems.Count
app.Workbooks.Open fd.SelectedItems(i)
接下来我
将wb设置为工作簿
对于应用程序中的每个wb。工作簿
如果wb.Name为“main.xlsm”,则
将无线传感器网络设置为工作表
设置wsN=wbM.Sheets.Add(后面:=wbM.Sheets(wbM.Sheets.Count))
wsN.Name=wb.Name
wbM.Sheets(wb.Name).Range(“A1:K1”).Value=wb.Sheets(1).Range(“A1:K1”).Value
wb.Close SaveChanges:=False
如果结束
下一个
应用程序。退出
设置app=Nothing
端接头

你好,山姆,欢迎来到堆栈溢出。你能和我们分享一下你到现在为止都在尝试什么来解决你的问题吗?我是巨魔的猜测,不多。。。因此,这里有一个打开文件夹中文件的基本方法:您只需调整它以满足您的需要,如果您被卡住了,请回来问一个问题!它帮了我很多忙