返回列表 上一主題 發帖

[發問] 以C欄為索引,刪除不必要的列數,再另存新檔

回復 4# Andy2483

您好,
1..程式執行不太穩定,測試好多次,每次執行都有不同的結果,有時結果是正常的,但大部份不正常.
2..[G1]原有設定格式,將(數字)包在裡面,當它是數字時,EX:56表面上看起來是(56),實際是數字56,
這時執行程式會出錯,多了一個空檔-(65)CPOMPA1148GP-SOY402,當數字未出現時,會以(XXX)暫代,這時程式另存的檔案數量就正常.

3..資料區內,有設定自動換行,但另存新檔後,原本調整好的列高,會自動縮減
4..用(XXX)測試,又不正常,一樣會出現空檔,而且第6項,C欄中沒有代號,卻把它存在空檔中
5..檔案資料一直會有變化,所以需要測試很多種模式.
6..我將其中二次結果,檔案上傳,請幫忙查看程式

感謝!
65.rar (163.98 KB)
XXX.rar (164.35 KB)

TOP

回復 3# PJChen


    謝謝前輩回復
後學以#1樓的範例植入程式碼執行後不會產生#3樓的檔案,請前輩再試試看或上傳植入程式的新原檔
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 2# Andy2483
您好,
測試結果,除了原先另存的檔案外,還會產生一個無廠商的空檔,可否幫忙看看~~感謝~~
-(XXX)CPOMPA1148GP-SOY402.rar (11.19 KB)

TOP

回復 1# PJChen


    謝謝前輩發表此主題與範例
後學學習方案如下,請前輩參考

Option Explicit
Sub TEST()
Dim Brr, Crr, V, Y, i&, j&, R, T, Td$, Tn$, G1$
Dim xR As Range, xU As Range, Sh As Worksheet, MyBook, MyPath
Set Y = CreateObject("Scripting.Dictionary")
Set Sh = Sheets("裝櫃通知")
Set R = Sh.[D:D].Find("TOTAL", Lookat:=xlWhole)
If Not R Is Nothing Then R = R.Row
Brr = Range(Sh.[A7], Sh.Cells(R - 1, "H"))
For i = 1 To UBound(Brr)
   If Brr(i, 1) = "" Then
      For j = 1 To 8: T = T & Trim(Brr(i, j)): Next
      If T <> "" Then Brr(i, 1) = Brr(i - 1, 1) Else: GoTo i01
   End If
   Y(Brr(i, 1)) = Y(Brr(i, 1)) + 1
   If Y(Brr(i, 1) & "|c") = "" Then Y(Brr(i, 1) & "|c") = Brr(i, 3)
i01: T = "": Next
If Y.Count = 0 Then Exit Sub
G1 = Sh.[G1].Text & Sh.[E1] & "-" & Replace(Replace(Sh.[G2], "/", ""), "#", "") & Sh.[H2]
Td = Format(Now, "YYYY_MM_DD_HH_MM_SS")
Set MyBook = ThisWorkbook
MyPath = MyBook.Path & "\"
If Dir(MyPath & Td, vbDirectory) = "" Then MkDir MyPath & Td
For Each T In Y.KEYS
   If InStr(T, "|") Then GoTo i02
   Sheets("裝櫃通知").Copy
   Set xU = Cells(Rows.Count, 1).Resize(1, 8)
   For i = 1 To UBound(Brr)
      If Brr(i, 1) <> T Then
         Set xU = Union(Cells(i + 6, 1).Resize(1, 8), xU)
      End If
   Next
   xU.Delete: [A7] = 1
   Tn = Y(T & "|c") & "-" & G1 & ".xlsx"
   ActiveWorkbook.SaveAs Filename:=MyPath & Td & "\" & Tn, _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
   ActiveWindow.Close
i02: Next
[A7].Resize(UBound(Brr), 8) = Brr
Set Y = Nothing: Set Sh = Nothing: Erase Brr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題