2017-01-27 3 views
-3

У меня есть несколько файлов xls в папке.Подсчет данных в нескольких файлах Excel vba

В колонке 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 
+6

Привет, Сэм, добро пожаловать в переполнение стека. Не могли бы вы поделиться с нами тем, что вы пробовали до сих пор, чтобы решить вашу проблему? – Wujaszkun

+2

Я догадываюсь о троллях, не так много ... Итак, вот основной способ открыть файлы в папке: http://stackoverflow.com/a/30758554/4628637 Вам просто нужно настроить его в соответствии с вашими потребностями и если вы застряли, возвращайтесь сюда, чтобы задать вопрос! – R3uK

ответ

1

Вы можете сделать что-то очень простое, как это.

=('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 
+0

thnak u это помогло мне немного так много –

+0

отлично! отметьте это как ответ, пожалуйста. – ryguy72

Смежные вопросы