Board logo

¼ÐÃD: [µo°Ý] ½Ð°Ý¦p¦ó§âµL¸ê®Æªº¦h¾l­¶­±³]©w¤@«ö¶s§R°£ [¥´¦L¥»­¶]

§@ªÌ: simplehope    ®É¶¡: 2016-10-3 14:34     ¼ÐÃD: ½Ð°Ý¦p¦ó§âµL¸ê®Æªº¦h¾l­¶­±³]©w¤@«ö¶s§R°£

¦U¦ì«e½ú¦n~

¦pªþ¥[ÀɮסA¹w³]¦³61­¶(¦]¤W¶Ç¤£¤F¡A´î¦¨10­¶)¡A¦ý¦]¥Î³~¡A¦³®É¥Î¤£¤F¨º»ò¦h¡A
¦³¨S¦³VBA¯à¼g¦¨¡G­Y¨S¥Î¨ìªº­¶­±µL¸ê®Æ(¨S¥Î¨ìªº­¶­±)¡A«ö¶s´N¦Û°Ê§R°£ªº¤èªk¡H

¦]¬°¤@­Óworkbook±`¦³¦n´X­Ó sheets¡A¤@­Ósheet¬ù1.5MB, ¥|­Ósheet ´N6MB, ÀÉ®×¹ê¦b¤Ó¤j¤F¡K

¤Ï¹L¨Ó»¡¡A¦pªG§Ú¹w³]20­¶¡A¤£°÷¥Î®É¡A¯à§_¤]·s¼W¤@vba«ö¶s, ¤@«ö´N¯à¦bsheet³Ì¤U­±ª½±µ·s¼W¤@·s­¶¡A
¥B¥k¤è"¦Ç¦â°Ï°ì"ªºÁ`­p³sµ²¤]¯à²Î­p¨ì¡H
[attach]25424[/attach]

½Ð¤j®aÀ°¦£¤@¤U¤F~~¯u¤ß·PÁÂ

[attach]25425[/attach]
§@ªÌ: simplehope    ®É¶¡: 2016-10-3 20:07

¤U¤È¬ðµM·Q¨ì¥H¤U¼gªk¡G
===========
Sub §R°£ªÅ¥Õ­¶­±()

For i = 3128 To 112 Step -52

    If Range("AH" & i) = "" Then
    Range("AH" & i).Offset(-7, 0).Rows("1:52").EntireRow.Select
    Selection.Delete Shift:=xlUp

    End If

Next

End Sub
====================
¦ý°õ¦æ«á¡AÁ`­¶¼Æ·|¶Ã±¼¡A¦p¹Ï¡G
[attach]25432[/attach]
Á`­¶¼Æ61­¶¡A¦ý¹ê»Ú¥u¦³¤G­¶

[attach]25433[/attach]
³s±µ­¶¼Æªº¦Ç¦â°Ï°ì

À³¸Ó¬Ocell AT74­n§ï¤½¦¡¡A¦ý·Q¤£¥X¨Ó¥i¥H¥Î¤°»ò¨ç¼Æ¡C
¥u¦n¦A½Ð¤j«L­ÌÀ°À°¦£~~
§@ªÌ: simplehope    ®É¶¡: 2016-10-3 21:22

©êºp¤j®a¡A³Q§Úé¨ì¡A¥Î³Ì²Âªº¤èªk¸Õ¥X¤F!
¦A¥[°Ý¡A¦pªG°õ¦æ«á¦³¨â­¶¡A·Q¥t¦s¦¨pdf¡A¦p¦óÂ^¨ú¤u§@ªí¦WºÙ¬°pdf ªº¦WºÙ?
³o¦¸§Ú¯uªº¤£·|¤F....
§@ªÌ: simplehope    ®É¶¡: 2016-10-4 12:36

¦^´_ 3# simplehope

¼õ¨ì¥b©]¤TÂI¡AÁ`ºâ¸Õ¥X¨Ó¤F¡A·s¼W­¶­±«á¡AÁÙ¬O·|¦³­¶¼Æ¶Ã±¼ªº°ÝÃD¡C
ºCºC¬ã¨s¡A¤]ÁÂÁ¦³¶i¨Ó¬Ýªº¤j®a¡C
§@ªÌ: GBKEE    ®É¶¡: 2016-10-5 09:04

¥»©«³Ì«á¥Ñ GBKEE ©ó 2016-10-8 15:17 ½s¿è

¦^´_ 4# simplehope
¸Õ¸Õ¬Ý
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Sh As Worksheet, xCol As Integer, Rng As Range, i As Integer
  4.     For Each Sh In ActiveWorkbook.Sheets
  5.          If Sh.PageSetup.PrintArea <> "" Then
  6.             Set Rng = Nothing
  7.             With Sh
  8.                 xCol = .VPageBreaks(1).Location.Column
  9.                 For i = 1 To .HPageBreaks.Count
  10.                     If .HPageBreaks(i).Location.Range("F16") = "" Then Set Rng = .HPageBreaks(i).Location: Exit For
  11.                 Next
  12.                 If Not Rng Is Nothing Then
  13.                     .PageSetup.PrintArea = .Range("a1", .Cells(Rng.Offset(-1).Row, xCol)).Address
  14.                     .Range("a1", .Cells(Rng.Offset(-1).Row, xCol)).Select
  15.                     .Range(Rng, .Range("A" & .Cells.SpecialCells(xlCellTypeLastCell).Row)).Resize(, xCol).Delete xlUp
  16.                     'AJÄæ­ì¥»¤½¦¡=IF(AT14="","",$AT$74) , §ï¤½¦¡ =Á`­¶¼Æ
  17.                 End If
  18.             End With
  19.             Sh.Names.Add Name:="Á`­¶¼Æ", RefersToR1C1:=Sh.HPageBreaks.Count + 1
  20.         End If
  21.     Next
  22. End Sub
½Æ»s¥N½X
PS:2016/10/08 ­×¥¿
§@ªÌ: simplehope    ®É¶¡: 2016-10-8 00:47

ÁÂÁÂG¤j¡A³o°÷¤p§Ì¬ã¨s¦n¤@°}¤l¤F¡G)
«Ü°ª¯Åªº¼gªk¡K¤p§Ìªº¤g¬¶¹ê¦bºF·\µLªk¬Û¤ñ


¸òwith ¡E¡E¡Eend with
¸òfor each...in
¸òif not ±ø¥ó¦¡ ¯uªº¬O«Ü¤£¼ô°Ú¡K
§@ªÌ: simplehope    ®É¶¡: 2016-10-8 10:31

¦^´_ 5# GBKEE

G¤j¤£¦n·N«ä¡A°õ¦æ¨ì¤@¥b·|¥X²{¿ù»~¡G"°}¦C¯Á¤Þ¶W¥X½d³ò"¦p¤U¹Ï¡G
    [attach]25488[/attach]
[attach]25489[/attach]
²q°ÝÃD¥X¦b xCol = .VPageBreaks(1).Location.Column  ¦ý¤£·|§ï....

¹ï¥H¤U³o¥y¤]¤£À´¡G
Range(Rng, .Range("A" & .Cells.SpecialCells(xlCellTypeLastCell).Row)).Resize(, xCol).Delete xlUp
'AJÄæ­ì¥»¤½¦¡=IF(AT14="","",$AT$74) , §ï¤½¦¡ =Á`­¶¼Æ

ÁÙ¦³³o¥y¬O
Sh.Names.Add Name:="Á`­¶¼Æ", RefersToR1C1:=Sh.HPageBreaks.Count + 1
·N«ä¬O·s¼W¤@­Ó¦WºÙ½d³ò¥s "Á`­¶¼Æ"¡A¨úR1C1®æ¦¡¡A¬Ý¦³´X­ÓHPageBreak ¦A+ 1 ¶Ü?
¨ºAJÄæ­n«ç»ò³s¨ì"Á`­¶¼Æ"©O?
¸£³U¦³ÂIÂण¹L¨Ó
§@ªÌ: GBKEE    ®É¶¡: 2016-10-8 15:30

¥»©«³Ì«á¥Ñ GBKEE ©ó 2016-10-8 15:31 ½s¿è

¦^´_ 7# simplehope

5# ªºµ{¦¡½X¤w­×¥¿,½Ð¦A¸Õ¸Õ

'** ¨úA1¨ì ²Ä¤@­Ó««ª½¤À­¶½uªº³Ì¥kÃ䪺Äæ¦ì)¦A¦V¤U¨ì¤u§@­¶ªº ³Ì«á¤@­ÓÀx¦s®æªº¦C¸¹******
Range(Rng, .Range("A" & .Cells.SpecialCells(xlCellTypeLastCell).Row)).Resize(, xCol).Delete xlUp
'AJÄæ­ì¥»¤½¦¡=IF(AT14="","",$AT$74) , §ï¤½¦¡ =Á`­¶¼Æ
'SpecialCells : expression.SpecialCells(Type, Value)
'SpecialCells ¤èªk    ¶Ç¦^ Range ª«¥ó¡A¦¹ª«¥ó¥Nªí»P«ü©w«¬ºA¤Î­È¬Û²Å¦Xªº©Ò¦³Àx¦s®æ¡CRange ª«¥ó
'Type     ¥²¿ïªº XlCellType¡C­n¥]§tªºÀx¦s®æ¡C
'xlCellTypeLastCell¡C¤w¥Î½d³òªº³Ì«á¤@­ÓÀx¦s®æ=>¤u§@­¶ªº ³Ì«á¤@­ÓÀx¦s®æ

ÁÙ¦³³o¥y¬O
Sh.Names.Add Name:="Á`­¶¼Æ", RefersToR1C1:=Sh.HPageBreaks.Count + 1
**·s¼W¤@­Ó¦WºÙ½d³ò¥s "Á`­¶¼Æ"¡A¨úR1C1®æ¦¡¡A¬Ý¦³´X­ÓHPageBreak ¦A+ 1 **
¨ºAJÄæ­n«ç»ò³s¨ì"Á`­¶¼Æ"©O?
**** ¤£¬O¦³½Ð§A ¦bAJÄæ­ì¥»¤½¦¡=IF(AT14="","",$AT$74) , §ï¤½¦¡ =Á`­¶¼Æ****
§@ªÌ: simplehope    ®É¶¡: 2016-10-8 18:51     ¼ÐÃD: ¶×¥X¸ê®Æ¨ì·s¤u§@ªí¡A¦p¦ó¸Ñ¨M¦³ªÅ¥Õ¦C¡A¸ê®Æ¤£³s³e°ÝÃD

¥»©«³Ì«á¥Ñ simplehope ©ó 2016-10-8 18:52 ½s¿è

¤§«e¼g¤F­ÓVBA¡A°µ¶×¥X¨ì·s¤u§@ªí¥i¥H¦¨³s³e¸ê®Æ¡A
­ì¥»AÄæ(No.ªºÄæ¦ì)µL¤½¦¡¡A¦ý¦]¬°­n¦Û°Ê¬y¤ô¸¹»Ý¨D¡A§âAÄæ(No.ªºÄæ¦ì)®M¤½¦¡°µ¬y¤ô¸¹¤§«á¡A
¦p¤U¹Ï¥Ü
[attach]25497[/attach]

¦A¶×¥X«á´N¦³¸ê®Æ¤£³s³e°ÝÃD
¦p¤U¹Ï¥Ü
[attach]25498[/attach]

¤p§Ì¾q¶w¹ê¦b¸Õ¤£¥X¤èªk¸Ñ¨M¡A¥u¦n¤S¨Ó½Ð¤j¤jÀ°À°¦£¤F~~ÁÂÁÂ
[attach]25496[/attach]
§@ªÌ: simplehope    ®É¶¡: 2016-10-8 20:12

¦^´_ 8# GBKEE


·PÁÂG¤j¡A¨ü±Ð¤F~~¥i¥H¥Î¤F!
§@ªÌ: GBKEE    ®É¶¡: 2016-10-9 08:14

¦^´_ 9# simplehope
¸Õ¸Õ¬Ý
  1. Option Explicit
  2. Sub ¶×¥X¦a½S¸ê®Æ¨ì·s¤u§@ªí()
  3.     Dim Sh(1 To 2), Rng(1 To 2) As Range, xCol As Integer, R As Integer
  4.     Application.ScreenUpdating = False
  5.     Set Sh(1) = Sheets("Mom (38P) (2)")    '**¨¾¤î¥X¿ù: «ü©w¤u§@ªí¦WºÙ***
  6.     'Set Sh(1) = ActiveSheet ''§ì¥Ø«e¤u§@ªí¦WºÙ
  7.     '¨¾§b1
  8.     For Each Sh(2) In Sheets
  9.         If InStr(Sh(2).Name, "¶×¥X") Then
  10.             Application.DisplayAlerts = False
  11.             Sh(2).Delete
  12.             Application.DisplayAlerts = True
  13.             Exit For
  14.         End If
  15.     Next
  16.     With Sheets.Add(, Sheets(Sheets.Count))
  17.         .Name = Sh(1).Name & "¶×¥X"
  18.         Set Sh(2) = ActiveSheet
  19.     End With
  20.     Sh(1).Select
  21.     Sh(1).Range("A1:AM15").Copy
  22.     MyCopy Sh(2).Range("A1")
  23.     With Sh(1)
  24.         xCol = .VPageBreaks(1).Location.Column - 1
  25.         For i = 0 To .HPageBreaks.Count
  26.             If i = 0 Then
  27.                 Set Rng(1) = .Range("A16")
  28.             Else
  29.                 Set Rng(1) = .HPageBreaks(i).Location.Range("A16")
  30.             End If
  31.             If Rng(1).Cells(1, 6) <> "" Then
  32.                 With Rng(1)
  33.                     R = .Cells(1, 6).End(xlDown).Row - .Row
  34.                     If R < 25 Then R = R + 1
  35.                     Rng(1).Resize(R, xCol).Copy
  36.                 End With
  37.                 With Sh(2).Range("A" & Rows.Count).End(xlUp)(2)      ' (2)= .Offset(1) = .Cells(2)
  38.                     If .Row < 16 Then        'A13:A15 ¬°¦X¨ÖÀx¦s®æ : .Offset(1)-> = A14
  39.                         Set Rng(2) = .Parent.Range("A16")
  40.                     Else
  41.                         Set Rng(2) = .Cells
  42.                     End If
  43.                 End With
  44.                 MyCopy Rng(2)
  45.             Else
  46.                 Exit For
  47.             End If
  48.         Next
  49.     End With
  50.     Application.ScreenUpdating = True
  51.     MsgBox ("¶×¥X§¹¦¨")
  52. End Sub
  53. Sub MyCopy(Rng As Range)   'µ{¦¡(¶Ç»¼°Ñ¼Æ)  : ¬Û¦Pªºµ{¦¡½X¥i¥Î
  54.     With Rng
  55.         .PasteSpecial Paste:=xlPasteValues              '­È
  56.         .PasteSpecial Paste:=xlPasteColumnWidths 'Äæ¼e
  57.         .PasteSpecial Paste:=xlPasteFormats            '®æ¦¡
  58.     End With
  59. End Sub
½Æ»s¥N½X

§@ªÌ: ­ã´£³¡ªL    ®É¶¡: 2016-10-9 10:34

  1. Sub ¶×¥X¦a½S¸ê®Æ¨ì·s¤u§@ªí()
  2. Dim vSht As Worksheet, R&, vR As Range, SHN$, xSht As Worksheet

  3. Set vSht = ActiveSheet: SHN = vSht.Name & "¶×¥X"
  4. On Error Resume Next: Set xSht = Sheets(SHN): On Error GoTo 0
  5. If xSht Is Nothing Then Set xSht = Sheets.Add(after:=Sheets(Sheets.Count))

  6. With xSht
  7.      .Name = SHN:  .Cells.Clear '­«©R¦W, ²M°£¤º®e
  8.      R = Val(vSht.[AT51]) * 52: If R = 0 Then Exit Sub '¨ú±o­¶¼Æ
  9.      vSht.Range("A1:AM" & R).Copy .[A1] '¶K¤W¸ê®Æ
  10.      .Range("A16:A" & R) = "=TEXT(COUNT(AK$16:AK16),""'000"")" '§Ç¸¹¤½¦¡
  11.      .Range("A1:AM" & R) = .Range("A1:AM" & R).Value '¥þ³¡¤º®e¶K¦¨­È
  12.      For Each vR In vSht.[A1:AM1]
  13.          .Range(vR.Address).ColumnWidth = vR.ColumnWidth 'Äæ¼e
  14.      Next
  15. End With

  16. On Error Resume Next
  17. With xSht.Range("AK16:AK" & R)
  18.      .SpecialCells(xlCellTypeConstants, 22).EntireRow.Delete '§R°£¡e¤å¦r¡f®æ¾ã¦C
  19.      .SpecialCells(xlCellTypeBlanks).EntireRow.Delete  '§R°£¡eªÅ¥Õ®æ¡f¾ã¦C
  20. End With
  21. On Error GoTo 0

  22. xSht.Select
  23. End Sub
½Æ»s¥N½X
¡@
[attach]25499[/attach]
¡@
¡@
§@ªÌ: simplehope    ®É¶¡: 2016-10-9 17:05

¦^´_ 11# GBKEE

­º¥ý·PÁÂG¤jªá¨º»ò¦h®É¶¡¡AÁÙ³o»ò§Ö¦^À³¡A¶W·P°Êªº¡I
°õ¦æ«á·|¦³"Åܼƥ¼©w¸q"¿ù»~¡Aµ{¦¡Åã¥Ü¦b For i = 0 To .HPageBreaks.Count ¡A·í¤¤ªºi ¤Ï¥Õ

¤p§Ì¥Î¦Û¤w­ì¥»ªºVBA½X¡A¤g¬¶¸Ñ¨M°ÝÃD¦p¤U¡G
¦]¯à¤O¤£¨¬±q¿é¥X­¶(¨Ó·½­¶)§ï½Æ»s½d³ò¡A´N´«±q¿é¤J­¶(¶×¥X­¶) ¤U¤â
­ì¥»§PÂ_[A16]¦V¤U¨ì³Ì«á¤@¦C¦Aoffset¤@¦C, §ï¥Ñ±q[F16]¶}©l§PÂ_¡A¦V¤U¨ì³Ì«á¤@¦C¦Aoffset¨ìAÄæ¡A
¦]FÄæ¦b¿é¥X­¶­YªÅ¥Õ¡A­ì¥»´NµL¤½¦¡(µL¸ê®Æ)¡A©Ò¥H¨ì¤F¶×¥X­¶¤]¬OµL¸ê®Æ¡A¥Î¥H¤W¤èªk«K¥i¥H¦³½Æ»s¸ê®Æ³sÄò©Ê

«Ü¨ØªA«D¨Ï¥ÎªÌªºG¤j¡A¯à¼g¥X²Å¦X¹ê»Ú¥Î³~¤S¦p¦¹Â²¬ù¦³®Ä²vªºµ{¦¡½X¡I
¤p§Ì¥\¤O©|²L¼g¥Xªºµ{¦¡«Ü²ÊÁW¡A¹ïG¤jµ{¦¡½X¼È®É¥u¯à±æ¦Ó¿³¹Ä¡AºCºC¬ã¨s°Ú
  1. Sub ¶×¥X¦a½S¸ê®Æ¨ì·s¤u§@ªí()
  2.    
  3.     shn = ActiveSheet.Name
  4.         
  5.     '¨¾§b1
  6.     For e = 2 To Sheets.Count
  7.         If shn & "¶×¥X" = Sheets(e).Name Then
  8.             Application.DisplayAlerts = False
  9.             Sheets(shn & "¶×¥X").Delete
  10.             Application.DisplayAlerts = True
  11.         Exit For
  12.     End If
  13.     Next

  14.    
  15.     Application.ScreenUpdating = False
  16.    


  17.     Worksheets.Add after:=Worksheets(Sheets.Count)
  18.     Worksheets(Sheets.Count).Name = shn & "¶×¥X"

  19.     '§ì¨úÄæ¦ì ·s¼W
  20.     Worksheets(shn).Select
  21.     Range("A1:AM15").Select
  22.     Range("A1:AM15").Copy
  23.     Worksheets(Sheets.Count).Select
  24.     Range("A1").Select
  25.     Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
  26.     SkipBlanks:=False, Transpose:=False
  27.     ActiveSheet.Paste

  28.     '§ì¨ú¨C­¶¸ê®Æ¤º®e(¨Ï¥Î°j°é)
  29.     Worksheets(shn).Select
  30.     Dim i As Integer, j As Integer
  31.     j = Range("AT51").Value
  32.    
  33.     For i = 16 To 16 + j * 52 Step 52 'À³­nJ-1, ¦ý­Y¥u¦³¤@­¶·|¦³¿ù¡A¦h¶×¥X¤@­¶¨S®t
  34.         Worksheets(shn).Select
  35.         Range("a" & i & ":am" & i).Select
  36.         Range(Selection, Selection.End(xlToRight)).Select
  37.         Range(Selection, Selection.End(xlDown)).Select
  38.         Selection.Copy
  39.         Worksheets(Sheets.Count).Select

  40.     If Worksheets(Sheets.Count).Range("F16") = "" Then
  41.         Range("A16").Select
  42.         ActiveSheet.Paste '¥ý¶K¤@¦¸§t¤½¦¡
  43.         Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, _
  44.         SkipBlanks:=False, Transpose:=False '¦A¶K¤@¦¸§â¤½¦¡®³±¼
  45.         Range("F16").End(xlDown).Offset(1, -5).Clear '§R°£AÄæ¸ê®Æ,¥H§Q¶K¤W¸ê®Æ³sÄò
  46.     Else
  47.         Worksheets(Sheets.Count).Range("F16").End(xlDown).Offset(1, -5).Select
  48.         ActiveSheet.Paste '¥ý¶K¤@¦¸§t¤½¦¡
  49.         Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
  50.         xlNone, SkipBlanks:=False, Transpose:=False '¦A¶K¤@¦¸§â¤é´ÁÅܬ°¤å¦r
  51.       
  52.     End If
  53. Next

  54. end sub
½Æ»s¥N½X

§@ªÌ: ­ã´£³¡ªL    ®É¶¡: 2016-10-9 17:39

¨Sª`·N­ìªí¤½¦¡°Ñ·Ó®æ¦b½Æ»s½d³ò¤§¥~¡A­×§ï¤@¤U¡G

With xSht
¡@¡@¡@.Name = SHN:  .Cells.Clear '­«©R¦W, ²M°£¤º®e
¡@¡@¡@.[BK3] = vSht.[BK3].Value
¡@¡@¡@.[AV1] = vSht.[AV1].Value

¡@¡@¡@.[BI3] = vSht.[BI3].Value
¡@¡@¡@R = Val(vSht.[AT51]) * 52: If R = 0 Then Exit Sub '¨ú±o­¶¼Æ
¡@¡@¡@vSht.Range("A1:AM" & R).Copy .[A1] '¶K¤W¸ê®Æ
¡@¡@¡@.Range("A16:A" & R) = "=TEXT(COUNT(AK$16:AK16),""'000"")" '§Ç¸¹¤½¦¡
¡@¡@¡@.Range("A1:AM" & R) = .Range("A1:AM" & R).Value '¥þ³¡¤º®e¶K¦¨­È
¡@¡@¡@For Each vR In vSht.[A1:AM1]
¡@¡@¡@¡@¡@.Range(vR.Address).ColumnWidth = vR.ColumnWidth 'Äæ¼e
¡@¡@¡@Next
¡@¡@¡@.[BK3] = "": .[AV1] = "": .[BI3] = ""
End With
§@ªÌ: simplehope    ®É¶¡: 2016-10-9 18:17

¦^´_ 12# ­ã´£³¡ªL

·PÁ­ã¤jµo¥\±Ï¥@¡I
­ã¤jªº·§©À¬O¹ï¿é¥X­¶°µ­×§ï¡A«ÜÅå³Yµ{¦¡½X³º¯à³o¼Ë¼g¡I¤Ó¼F®`¡I´Nºâ§Ú·Q¯}ÀY¤]·Q¤£¥X¨Ó¡K
µ{¦¡½X§¹¥þ¨S°ÝÃD¡A±©¤@ªº°ÝÃD¬O¤p§Ì¬Ý¤£¤ÓÀ´¥H¤U¡G

.SpecialCells(xlCellTypeConstants, 22).EntireRow.Delete '§R°£¡e¤å¦r¡f®æ¾ã¦C
¬A¸¹¤º¬°¦ó­n¥[ ,22³o°Ñ¼Æ? F1¬d¸ß¨S¬Ý¨ì¦³»¡©ú22
[attach]25508[/attach]

µ{¦¡½X³Ì«á¥[ªºOn Error GoTo 0¡A¥Î·N¬°¦ó¡H
F1¬d¸ß: °±¤î²{¦bµ{§ÇùØ¥ô¦ó¤w±Ò°Êªº¿ù»~³B²zµ{¦¡¡C
·|«Øij¥ô¦óµ{¦¡½X¡A ³£¦bµ²§À¥[¤W"On Error GoTo 0" ¶Ü¡H
§@ªÌ: simplehope    ®É¶¡: 2016-10-9 18:37

¦^´_ 14# ­ã´£³¡ªL

ºF·\¡K¤p§Ì¤]¨Sµoı¡K
·d¤£À´¡A¬°¦ó¨S­×¥¿¤§«e¡A¤@¼Ë¬Ocopy ,    vSht.Range("A1:AM" & R).Copy .[A1] '¶K¤W¸ê®Æ
·Ó²z¨Ó»¡À³¸Ó·|¤@¤­¤@¤Q§âRange("A1:AM" & R)ªº¤º®ecopy ¹L¥h¡A
¦ý´«¤F[AV1]¤U©Ô¿ï³æªº¶µ¥Ø¡A«oÁÙ¬Ocopy ¨S´«¤§«eªº¤º®e¡H
¤p§Ì¤£À´¡A¯à»¡©ú¤@¤U­ì¦]¶Ü¡H

With xSht
      .Name = SHN:  .Cells.Clear '­«©R¦W, ²M°£¤º®e
      .[BK3] = vSht.[BK3].Value
      .[AV1] = vSht.[AV1].Value
      .[BI3] = vSht.[BI3].Value
      R = Val(vSht.[AT51]) * 52: If R = 0 Then Exit Sub '¨ú±o­¶¼Æ
      vSht.Range("A1:AM" & R).Copy .[A1] '¶K¤W¸ê®Æ
      .Range("A16:A" & R) = "=TEXT(COUNT(AK$16:AK16),""'000"")" '§Ç¸¹¤½¦¡
      .Range("A1:AM" & R) = .Range("A1:AM" & R).Value '¥þ³¡¤º®e¶K¦¨­È
      For Each vR In vSht.[A1:AM1]
          .Range(vR.Address).ColumnWidth = vR.ColumnWidth 'Äæ¼e
      Next
      .[BK3] = "": .[AV1] = "": .[BI3] = ""
End With
§@ªÌ: simplehope    ®É¶¡: 2016-10-9 18:46

¦^´_ 16# simplehope

¸ÕµÛ¤â°Êcopy ½d³ò¡A¦A¶K¨ì·s¤u§@ªí¡A
´Nµo²{¤º®e¤¤¦³¤½¦¡ªº®æ¤l³£¨S¸ê®Æ¡A¦]¬°¯Ê¥F°Ñ·Ó¡K
¦n¹³ª¾¹D¬°¤°»ò¤F¡K
¯àµo²{³o¤]¤Ó¯«
§@ªÌ: simplehope    ®É¶¡: 2016-10-9 18:59

¦^´_ 17# simplehope

ºÃ°Ý¥Î¤p§Ì­ì¥»ªºµ{¦¡½X·|¤£·|¦³³o°ÝÃD¡A
¦^ÀY¬Ý¤~µo²{¡A­ì¨Ó¬O§Ú¶K¤W¨â¦¸¡K²Ä¤@¦¸ª½±µpaste, ²Ä¤G¦¸¶K¤W­È&®æ¦¡¡A©Ò¥H¤~¨S¥X²{¯Ê¥F°Ñ·Óªº°ÝÀY
¡K¯u¬O¤g¬¶+½M¿ß¸I¤W¦ºÏû¤l¡K
§@ªÌ: ­ã´£³¡ªL    ®É¶¡: 2016-10-9 20:03

¥»©«³Ì«á¥Ñ ­ã´£³¡ªL ©ó 2016-10-9 20:05 ½s¿è

¦^´_ 15# simplehope


.SpecialCells(xlCellTypeConstants, 22).EntireRow.Delete '§R°£¡e¤å¦r¡f®æ¾ã¦C
¥Îªº¬O¥\¯àªí¡G½s¿è¡Ö¨ì¡Ö¯S®í¡]¨ä¥¦ª©¥»¥i¯à¤£¦P¡A§ä¬Ý¬Ý¡^¡@¡@
[attach]25509[/attach]

¦]¬°AKÄ榳®Ä¤º®e¬°¡e¼Æ­È¡f¡A©Ò¥H¥u­n±N¡e¤å¦r¡f¤Î¡eªÅ®æ¡f¾ã¦C®³±¼¡A³Ñ¤Uªº´N¬O©Ò»Ý¡G¡@
[attach]25510[/attach]¡@¡@[attach]25511[/attach]

¨Ï¥Î¡e¿ý»s¡f´N¥i¥H¨ú±oµ{¦¡½X¡]­n¿ý¨â¦¸¡^¡I¡@
¡@
¨Ï¥Î³o¥\¯à®É¡A­Y¿ï¨ú½d³ò¤¤¨S¦³¤å¦r¤ÎªÅ®æ¡Aµ{¦¡·|µo¥Í¿ù»~¦Ó¤¤Â_¡A
©Ò¥H«e­±¥[­Ó¡@On Error Resume Next ¡]²¤¹Lµ{¦¡¿ù»~Ä~Äò°õ¦æ¡^¡A
³o¬O¤w¹wª¾¤U¨â¦æµ{¦¡¥i¯à¦³¿ù»~µo¥Í«e´£¤U©Ò¥[ªº¡A
·í¨º¨â¦æµ{¦¡°õ¦æ§¹²¦¡A¥²¶·Åýµ{¦¡«ì´_¡e°»¿ù¡fªº¥\¯à¡A
©Ò¥H¦A¥[¡@On Error GoTo 0¡@¡]«ì´_°»¿ù¡^¡A
§_«h«á­±ªºµ{¦¡­Y¦³¿ù»~±NµL±q±oª¾¡A¤]¦]¦¹¥i¯à³B²z¥X¨Óªº¸ê®Æ¨Ã¤£¥¿½T¡A¦ÓµL¿ù»~´£¥Ü¡A
¤W¤@¬qªº¡G
On Error Resume Next
Set xSht = Sheets(SHN)¡@¡Ö¡@­Y¤u§@ªí¤£¦s¦b¡A¹w³]±N´£¥Ü¿ù»~¡A¦¹®É´£¥Ü´N²¤¹L¤F
On Error GoTo 0
¡@
¡@
§@ªÌ: ­ã´£³¡ªL    ®É¶¡: 2016-10-9 20:10

¦^´_ 16# simplehope


¤½¦¡°Ñ·Ó¨Ã¥¼±a¤u§@ªí¦WºÙ¤Þ¼Æ¡A
¦]¦¹¶K¦Ü¨ä¥¦ªí®É¡A¥¦°Ñ·Óªº¬O¥»¨­ªíªºÀx¦s®æ¡A
¦ý³oªíªº°Ñ·Ó®æ¬OªÅ¥Õªº¡A¤½¦¡­È·íµM¬O¿ù»~ªº¡I
§@ªÌ: ­ã´£³¡ªL    ®É¶¡: 2016-10-9 20:15

¥»©«³Ì«á¥Ñ ­ã´£³¡ªL ©ó 2016-10-9 20:18 ½s¿è

¦^´_ 18# simplehope


±z²Ä¤@¦¸¬O¤½¦¡­ì½L¶K¹L¨Ó¡A¦A¶K¦¨­È¡A³o´N¬O°Ñ·Ó¿ò¥¢°ÝÃD¡A
±N­ìªí¢Ï¢ä¢°§ï¦¨¡e¨øÂd¡f¡A¦A°õ¦æ±z­ì¨Óµ{¦¡¡A
¤â¤u¥h¤ñ¹ï¨âªí¢Ü¡þ¢Þ¨âÄæ­pºâµ²ªG¬Ý¬Ý¡I¡I¡I
§@ªÌ: Andy2483    ®É¶¡: 2022-12-12 15:19

¦^´_ 14# ­ã´£³¡ªL


    ÁÂÁ simplehope«e½úµoªí¦¹¥DÃD»P½d¨Ò
ÁÂÁ ­ã´£³¡ªL«e½ú«ü¾É
«á¾Ç¦b¦¹©«¾Ç¨ì«Ü¦hª¾ÃÑ,¤ß±oµù¸Ñ¦p¤U,½Ð¦A«ü¾É,ÁÂÁÂ

Option Explicit
Sub ¶×¥X¦a½S¸ê®Æ¨ì·s¤u§@ªí()
Dim vSht As Worksheet, R&, vR As Range, SHN$, xSht As Worksheet
'¡ô«Å§i(vSht,xSht) ¬O¤u§@ªí,(R)¬Oªø¾ã¼Æ,(vR)¬OÀx¦s®æ,(SHN)¬O¦r¦ê
Set vSht = ActiveSheet
'¡ô¥OvSht¬O²{¥Î¤u§@ªí
SHN = vSht.Name & "¶×¥X"
'¡ô¥OSHN¦r¦êÅÜ¼Æ ¬OvSht¤u§@ªí¦W¦r ³s±µ "¶×¥X"ªº¦r¦ê
On Error Resume Next
'¡ô«ü©w·íµo¥Í°õ¦æ¶¥¬q¿ù»~®É¡Acontrol ·|²¾¦Üºò±µ¦bµo¥Í¿ù»~¥BÄ~Äò°õ¦æªº»y¥y«á­±ªº »y¥y ¡C
'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/on-error-statement
Set xSht = Sheets(SHN)
'¡ô¥OxSht¬O ¦W¬° SHNÅܼƦr¦êªº¤u§@ªí
On Error GoTo 0
'¡ô°±¥Î¥Ø«e¹Lµ{¤¤¤w±Ò¥Îªº¥ô¦ó¿ù»~³B²z±`¦¡¡C
If xSht Is Nothing Then
'¡ô¦pªGxShtÅÜ¼Æ §P©w¬ONothing(¨S¦³ª«¥ó)
   Set xSht = Sheets.Add(after:=Sheets(Sheets.Count))
   '¡ô¥OxSht¬O ¦b³Ì«á¤@­Ó¤u§@ªí«á­±·s¼W¤@­Óªº¤u§@ªí
   'Sheets(Sheets.Count):³Ì«á¤@­Ó¤u§@

End If
With xSht
'¡ô¥H¤U¬OÃö©óxShtÅܼƤu§@ªíªºµ{§Ç
      .Name = SHN
      '¡ô­«©R¦W¬O SHN
      .Cells.Clear
      '¡ô²M°£¥þ³¡Àx¦s®æ
      .[BK3] = vSht.[BK3].Value
      '¡ô¥O[BK3]­È¬O ²{¥Î¤u§@ªí[BK3]­È
      .[AV1] = vSht.[AV1].Value
      '¡ô¥O[AV1]­È¬O ²{¥Î¤u§@ªí[AV1]­È
      .[BI3] = vSht.[BI3].Value
      '¡ô¥O[BI3]­È¬O ²{¥Î¤u§@ªí[BI3]­È
      R = Val(vSht.[AT51]) * 52
      '¡ô¥OR ¬O ²{¥Î¤u§@ªí[AT51]­ÈÂà¤Æ¬°¼Æ­È
      'Val():¶Ç¦^¦r¦ê¤¤¥]§tªº¼Æ¦ì¡A°µ¬°¾A·íÃþ«¬ªº¼Æ­È¡C
      If R = 0 Then Exit Sub '¨ú±o­¶¼Æ
      '¡ô¦pªGR³o¼Æ¦rÅܼƬO 0,´Nµ²§ôµ{¦¡°õ¦æ
      vSht.Range("A1:AM" & R).Copy .[A1] '¶K¤W¸ê®Æ
      '¡ô²{¥Î¤u§@ªí.[A1]¨ìAMÄæR¦CÀx¦s®æ¤§¶¡½d³òÀx¦s®æ½Æ»s¨ì xShtÅܼƤu§@ªí[A1]
      .Range("A16:A" & R) = "=TEXT(COUNT(AK$16:AK16),""'000"")" '§Ç¸¹¤½¦¡
      '¡ôxShtÅܼƤu§@ªí[A16]¨ìAÄæR¦CÀx¦s®æ¤§¶¡½d³òÀx¦s®æ¦r¦ê¬O §Ç¸¹¤½¦¡
      '¤½¦¡·N¸q:§P©w«ü©wÀx¦s®æ½d³ò¬O¼Æ¦rªº®æ¼ÆÂà¤Æ¬°3½X¤å¦r,«e­±¦A¥H³æ¤Þ¸¹³s±µ
      'TEXT ¨ç¼Æ¡A¥H®æ¦¡¥N½X¨Ó®M¥Î®æ¦¡¡AÂǦ¹Åܧó¼Æ¦rÅã¥Üªº¤è¦¡¡C

      'https://support.microsoft.com/zh-tw/office/text-%E5%87%BD%E6%95%B8-20d5ac4d-7b94-49fd-bb38-93d29371225c
      'COUNT() ¨ç¼Æ¥u·|²Î­p¼Æ¦r«¬ªº¼Æ¾Ú¸ê®Æ¡A­Y¬O¸I¨ì¤å¦r¤º®eªºªí®æ¤]·|³Q©¿²¤¡C
      '¦]¬°Àx¦s®æ¦pªG¬O¤½¦¡!·|¦Û°Ê²Ö¥[¨ä¦C¦ì.Äæ¦ì©Î³£²Ö¥[,µøÄæ¦C¬O§_«a¤W"$"²Å¸¹¦Ó©w

      .Range("A1:AM" & R) = .Range("A1:AM" & R).Value '¥þ³¡¤º®e¶K¦¨­È
      '¡ô¥OxShtÅܼƤu§@ªí.[A1]¨ìAMÄæR¦CÀx¦s®æ¤§¶¡½d³òÀx¦s®æ¥þ³¡¤º®e¶K¦¨­È
      For Each vR In vSht.[A1:AM1]
      '¡ô³]¶¶°j°é!¥OvRÀx¦s®æÅܼƬO ²{¥Î¤u§@ªí¸Ì[A1:AM1]ªº¤@®æ
          .Range(vR.Address).ColumnWidth = vR.ColumnWidth 'Äæ¼e
          '¡ô¥OxShtÅܼƤu§@ªí¸Ì (vRÀx¦s®æÅܼƩҦb¦ì§})ªºÀx¦s®æ Äæ¼e¬O ¦PvRÀx¦s®æÅܼÆÄæ¼e
      Next
      .[BK3] = "": .[AV1] = "": .[BI3] = ""
      '¡ô¥OxShtÅܼƤu§@ªí¸Ì[BK3],[AV1],[BI3]Àx¦s®æ¬OªÅ®æ
End With

On Error Resume Next
'¡ô¹J¿ùÄ~Äò°õ¦æ¤£°»¿ù
With xSht.Range("AK16:AK" & R)
'¡ô¥H¤U¬OÃö©óxShtÅܼƤu§@ªí [AK16]¨ìAKÄæR¦CÀx¦s®æ¤§¶¡½d³òÀx¦s®æ ªºµ{§Ç
     .SpecialCells(xlCellTypeConstants, 22).EntireRow.Delete '§R°£¡e¤å¦r¡f®æ¾ã¦C
     '¡ô§P©wxlErrors(³æ¤¸¿ù»~­È) Or xlLogical(¨ã¦³ÅÞ¿è­Èªº³æ¤¸®æ) Or xlTextValues(¨ã¦³¤å¦rªºÀx¦s®æ)
     '½d³ò¸Ì³o´XºØ­ÈªºÀx¦s®æ©Ò¦bªº¦C§R°£

     'https://learn.microsoft.com/zh-tw/office/vba/api/excel.xlspecialcellsvalue
     .SpecialCells(xlCellTypeBlanks).EntireRow.Delete  '§R°£¡eªÅ¥Õ®æ¡f¾ã¦C
     '½d³ò¸ÌªÅ®æÀx¦s®æ©Ò¦bªº¦C§R°£,(¤£¥]§t¦³¤½¦¡µ²ªG¬°ªÅ¥Õ¦r¤¸ªºÀx¦s®æ)
End With
On Error GoTo 0
'¡ô°±¥Î¥Ø«e¹Lµ{¤¤¤w±Ò¥Îªº¥ô¦ó¿ù»~³B²z±`¦¡¡C
xSht.Select
End Sub
§@ªÌ: Andy2483    ®É¶¡: 2022-12-12 16:44

ÁÂÁ½׾Â,ÁÂÁ¦U¦ì«e½ú
«á¾ÇÂǦ¹©«½m²ß°}¦C&¦r¨å
µ²ªG:
[attach]35592[/attach]

Option Explicit
Sub TEST()
Dim Brr, Crr, C&, i&, j&, xR, R&, T, V, Y, Z
Dim N&, Sh As Worksheet
Set Y = CreateObject("Scripting.Dictionary")
Set Sh = ActiveSheet
Brr = Range(Sh.[A1], Sh.Cells(Sh.UsedRange.Rows.Count, "AM"))
For i = 1 To [AM1].Column
   Y(i & "C") = Columns(i).ColumnWidth
Next
For i = 1 To 15
   Y(i & "R") = Rows(i).Rows.RowHeight
Next
For i = 16 To UBound(Brr)
   If IsNumeric(Brr(i, [AK1].Column)) And Brr(i, [AK1].Column) <> "" Then
      N = N + 1
      For j = 1 To [AM1].Column
         Brr(N, j) = Brr(i, j)
      Next
   End If
Next
Set Y("ªíÀY") = Range(Sh.[A1], Sh.[AM16])
Workbooks.Add
Y("ªíÀY").Copy [A1]
For i = 1 To [AM1].Column
   Columns(i).ColumnWidth = Y(i & "C")
Next
For i = 1 To 15
   Rows(i).Rows.RowHeight = Y(i & "R")
Next
Range([A16], [AM16]).ClearContents
Range([A16], [AM16]).Borders.LineStyle = 1
[16:16].Copy Rows("17:" & N + 15)
[A16].Resize(N, [AM1].Column) = Brr
End Sub
§@ªÌ: Andy2483    ®É¶¡: 2022-12-13 15:50

¦^´_ 23# Andy2483


    ½Æ²ß&¦AÀˬd­×§ïµ{¦¡½Xµù¸Ñ¦p¤U:

Option Explicit
Sub TEST()
Dim Brr, Y, C&, i&, j&, R&, N&, Sh As Worksheet
'¡ô«Å§iÅܼÆ:(Brr, Y)¬O³q¥Î«¬,(C,i,j,R,N)¬Oªø¾ã¼Æ,(Sh)¬O¤u§@ªí
Set Y = CreateObject("Scripting.Dictionary")
'¡ô¥OY ¬O¦r¨å
Set Sh = ActiveSheet: N = 15
'¡ô¥OSh ¬O²{¥Î¤u§@ªí: ¥ON=15
Brr = Range(Sh.[A1], Sh.Cells(Sh.UsedRange.Rows.Count, "AM"))
'¡ô¥OBrr¬O¤Gºû°}¦C!­Ë¤J[A1]¨ì(AMÄæ/³Ì«á¦³¨Ï¥ÎªºÀx¦s®æ¨º¤@¦Cªº¦C¸¹Àx¦s®æ) ­È
For i = 1 To 39
'¡ô³]¶¶°j°é!i±q 1¨ì39
   Y(i & "C") = Columns(i).ColumnWidth
   '¡ô¥O°j°é¼Æ³s±µ"C"·íkey,item¬O°j°é¼ÆÄæ¦ìªºÄæ¼e
   Y(i & "R") = Rows(i).Rows.RowHeight
   '¡ô¥O°j°é¼Æ³s±µ"R"·íkey,item¬O°j°é¼Æ¦C¦ìªº¦C°ª
Next
For i = 16 To UBound(Brr)
'¡ô³]¥~¶¶°j°é!i±q 16¨ìBrr°}¦CÁa¦V³Ì¤j¦C¸¹¼Æ
   If IsNumeric(Brr(i, 37)) And Brr(i, 37) <> "" Then
   '¡ô¦pªGIsNumeric()¨ç¼Æ§PÂ_°j°é¦C²Ä37ÄæBrr°}¦C­È¬O¼Æ¦r,¥B¤£¬OªÅ¦r¤¸
      N = N + 1
      '¡ôN¼Æ¦rÅܼƲ֥[ 1
      For j = 1 To 39
      '¡ô³]¤º¶¶°j°é!j±q 1¨ì39
         Brr(N, j) = Brr(i, j)
         '¡ô¥ONÅܼƦC²Äj°j°éÄ檺Brr°}¦C­È¬O iÅܼƦC²Äj°j°éÄ檺Brr°}¦C­È
      Next
   End If
Next
Set Y("ªíÀY") = Range(Sh.[A1], Sh.[AM16])
'¡ô¥O¥H "ªíÀY"¦r¦ê¬°key,item¬O²{¥Î¤u§@ªí[A1]¨ì[AM16]Àx¦s®æ¶°,­Ë¤JY¦r¨å¸Ì
'¦b¶}¤@­Ó·s¬¡­¶Ã¯¤§«e§â¥Î±o¨ìªº¸ê®Æ¥Î¦r¨å»P°}¦C¸Ë°_¨Ó

'Y("ªíÀY")Àx¦s®æ¸Ì¦³¤½¦¡!
Workbooks.Add
'¡ô¶}¤@­Ó·s¬¡­¶Ã¯
Y("ªíÀY").Copy [A1]
'¡ô¥O¥H "ªíÀY"¦r¦ê¬dY¦r¨å,§âÀx¦s®æ¶°½Æ»s¨ì¦¹·s¬¡­¶Ã¯[A1]
For i = 1 To 39
'¡ô³]¶¶°j°é!i±q 1¨ì39
   Columns(i).ColumnWidth = Y(i & "C")
   '¡ô¥Hi°j°é¼Æ³s±µ"C"ªº¦r¦ê¬dY¦r¨åªºitem­È ¬°i°j°é¼ÆÄæÄæ¼e
   Rows(i).Rows.RowHeight = Y(i & "R")
   '¡ô¥Hi°j°é¼Æ³s±µ"R"ªº¦r¦ê¬dY¦r¨åªºitem­È ¬°i°j°é¼Æ¦C¦C°ª
Next
Range([A16], [AM16]).ClearContents
'¡ô[A16]¨ì[AM16]Àx¦s®æ¤º®e²MªÅ
Range([A16], [AM16]).Borders.LineStyle = 1
'¡ô[A16]¨ì[AM16]Àx¦s®æ®æ½u¬O²Ó¹ê½u
[16:16].Copy Rows("17:" & N)
'¡ô²Ä16¦C½Æ»s¨ì 17¦Ü NÅܼƦC
[A1].Resize(N, 39) = Brr
'¡ô¥O[A1]ÂX®i¦V¤UNÅܼƦC,¦V¥kÂX®i39Äæ½d³òªºÀx¦s®æ,¥HBrr°}¦C­È­Ë¤J
'Y("ªíÀY")Àx¦s®æ¸Ì¦³¤½¦¡!©Ò¥H»Ý­n¥H°}¦C­È±a¤J

Set Brr = Nothing
Set Y = Nothing
'¡ôÄÀ©ñÅܼÆ
End Sub




Åwªï¥úÁ{ ³Â»¶®a±Ú°Q½×ª©ª© (http://forum.twbts.com/)