返回列表 上一主題 發帖

自動【判讀有標示指定底色的數字次數】&【次數加總】&【輸出檔案】之語法。

回復 2# Airman


    "... 有共1~n個的待判讀檔案(名稱=今日總表(均值排序)-????-(西元年-月-日)),..."

    請問:
          1.  1~n 個檔案, 最多可能 的 n 是多少?
          2. 假設 相同 "-(西元年-月-日)" 系列的檔案放在相同的檔案路徑" ?
          3.  所有不相同 "-(西元年-月-日)" 系列的檔案放在相同的檔案路徑" ?

TOP

回復 4# Airman


     要開啟上千個檔案來比對資料可能要比較久的執行時間
        
    我試試看能不能做得出來。

TOP

本帖最後由 Scott090 於 2019-5-4 07:20 編輯

回復 6# Airman


    請確認  (2019-04-05) 需求檔 以下的內容是否正確:
                號碼        01        02        03        04        05        06
          連續7個                                                1
          連續6個                1        1                        1
          連續5個                                        1       
          連續4個                                               
          連續3個                                1               
          連續2個                        1                       
             1個                2                                       

          注意:連續7個 的 06欄、連續6個的 02及 03 欄
           上面的表格會走位,請看板大的檔案,

TOP

回復 8# Airman

     1. 檔案以 日期序 做分類; 與  X-Y 無關
      2. 同一分類內每一個檔案都做相同的統計規則,
     統計規則:
                      單一個是從 (1~49),
                      連2個是從 (2~49),
                      連3個是從 (3~49),
                       ..........
                      連x個是從 (x~49),
                      連7個是從 (7~49) 計算的。
                     
      依據統計規則, 02、03欄 不該有 連6個的數字, 06欄 不該有 連7個的數字
       請在確認規則。

TOP

回復 8# Airman


   
   
    這是我做的答案,請確認

TOP

回復 11# Airman

   試看看是否符合需求
          今日總表(均值排序).rar (90.38 KB)

TOP

回復 16# Airman


    是否可告知實際上鑑別辨識了幾百個檔案,用了多少時間呢?

TOP

本帖最後由 Scott090 於 2019-5-5 21:16 編輯

回復 19# Airman


    抱歉,試運轉後沒有 remark ' 拿掉。
     不用人工入檔名
     請重試
    Option Explicit
Option Base 1

''===================
Sub Main()
      Dim wb As Workbook, sh As Worksheet, shSample As Worksheet, fpath$
      Dim arColor%(7), arDATA
      Dim i%, j%, k%, fileNo%, RowNo%, colNo%
      Dim Cat$    '檔案系列代碼
      Dim colorNo%      '底色數
      
      colorNo = 7
      colNo = 49
      ReDim arDATA(colorNo, colNo)
      
      Application.ScreenUpdating = False
      
      fpath = ThisWorkbook.Path
      
'取得欲評估的檔案
'================
   getFileNames
      
'取儲存格底色表CaeColor
'==================
      Set shSample = ThisWorkbook.Sheets("Sample")
      With shSample
            colorNo = 7       '7種底色
            For i = 1 To colorNo
                 arColor(colorNo - i + 1) = .Cells(i + 1, 1).Interior.ColorIndex
           Next
      End With
      
      Set sh = ThisWorkbook.Sheets("FileNameSh")
      
      fileNo = 1: Cat = sh.Cells(1, 2)
      Do While sh.Cells(fileNo, 2) <> ""
            If sh.Cells(fileNo, 2) <> Cat Then GoSub FinishCatFile: Cat = sh.Cells(fileNo, 2)
            
                  DoEvents
                  Application.ScreenUpdating = False
                  
                  Set wb = Workbooks.Open(fpath & "\" & sh.Cells(fileNo, 1))
                  RowNo = [B65536].End(xlUp).Row
                  If RowNo < 10 Then GoTo NextFile          '原規則設 Rowno <10 則不處理
                  
                  RowNo = RowNo - 1 - colorNo
                  For i = 1 To colorNo                '從 1 ~ 7 底色
                        
                        For j = 1 To colNo            '從 1~ 49 欄
                              For k = 0 To i - 1            '查核連續相同底色
                                    If RowNo - k = 1 Then GoTo NextFile       '檔案的有效列數比底色數少,Cells的列已到第1列
                                    If Cells(RowNo - k, j + 1).Interior.ColorIndex <> arColor(i) Then GoTo NextCol
                              Next
                              arDATA(colorNo - i + 1, j) = arDATA(colorNo - i + 1, j) + 1
NextCol:
                        Next
NextColor:
                   Next
            
NextFile:
            wb.Close (fpath & "\" & sh.Cells(fileNo, 1))
            Set wb = Nothing
            fileNo = fileNo + 1
            
      Loop
      GoSub FinishCatFile           'For the last one date code catagory
      
Exit Sub

FinishCatFile:
      With shSample
            .[b2].Resize(colorNo, colNo) = arDATA
            .Copy
      End With
      Sheets("Sample").Name = "今日總表(均值排序) - " & Cat & "_統計"
      On Error Resume Next
      Kill fpath & "\" & "今日總表(均值排序)-" & Cat & "_統計.xls"
      On Error GoTo 0
      
      ActiveWorkbook.Close savechanges:=True, Filename:=fpath & "\" & "今日總表(均值排序)-" & Cat & "_統計.xls"
      ReDim arDATA(colorNo, colNo)        'clear contents
      Application.ScreenUpdating = True
Return
End Sub

'To get all file names  into a working sheet
'=============================
Sub getFileNames()
      Dim fs, Cat$
      Dim sh As Worksheet
      Dim fpath$
      Dim i%, j%, R%
      
      fpath = ThisWorkbook.Path
      On Error Resume Next
      Set sh = Sheets("FileNameSh")
      If Err.Number <> 0 Then Sheets.Add.Name = "FileNameSh": Set sh = ActiveSheet
      On Error GoTo 0
      
      sh.Cells.Clear
      
      With sh
            fs = Dir(fpath & "\*.*")
            Do Until fs = ""
                 Cat = Left(Right(fs, 16), 12)
                 If InStr(Cat, "(2019") <> 0 Then
                        R = R + 1
                        .Cells(R, 1) = fs
                        .Cells(R, 2) = Cat
                  End If
                  fs = Dir
            Loop
            
            With .Sort
                  .SortFields.Add Key:=[B:B]
                  .SetRange sh.UsedRange
                  .Apply
            End With
      End With
End Sub

TOP

回復 21# Airman


  要把把程式檔跟資料檔放在同一路徑。

   

  請問有出現如上圖有檔案名稱的工作表嗎?

TOP

回復 24# Airman


    你沒執行的部分是對分類的排序。

     結果又如何?

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題