:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

เขียน VBA แยกหมวดสินค้า

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: เขียน VBA แยกหมวดสินค้า

Re: เขียน VBA แยกหมวดสินค้า

#33

by วังวู ช่ง » Tue Dec 25, 2012 9:54 pm

snasui wrote::D ไม่เข้าใจครับ ต้องการจะทำอะไร ปัญหาคืออะไร ต้องการผลลัพธ์เป็นอย่างไรครับ
ผมลองทำก่อนเป็นไงจะแจ้งให้อีกทีครับ

Re: เขียน VBA แยกหมวดสินค้า

#32

by snasui » Tue Dec 25, 2012 9:04 pm

:D ไม่เข้าใจครับ ต้องการจะทำอะไร ปัญหาคืออะไร ต้องการผลลัพธ์เป็นอย่างไรครับ

Re: เขียน VBA แยกหมวดสินค้า

#31

by วังวู ช่ง » Tue Dec 25, 2012 8:32 pm

เรียนท่าน อาจารย์ที่เคารบครับ ติดป้ญหานิดหน่อยตรงด้านด่างนี้ครับ ทำงานไม่ได้ตามต้องกานครับ ถ้าไม่เป็นกานรบกวนมากช่วยปรับให้หน่อยครับ จิงๆแล้วผมต้องกานทำอย่างนี้ครับ
BM7:BO7=VLOOKUP(AO12,name,2,0)
BM64:BO64=VLOOKUP(AO69,name,2,0)
.
.
.
.
.
ขอบคุณล่วงหน้าครับ

Code: Select all

    Sheets("List").Range("BL" & targetRow + 7).FormulaR1C1 = "=VLOOKUP(R[5]C[-23],name,2,0)"
[/quote]
Attachments
เขียน VBA แยกหมวดสินค้า.xlsm
(206.11 KiB) Downloaded 16 times

Re: เขียน VBA แยกหมวดสินค้า

#30

by วังวู ช่ง » Tue Dec 25, 2012 8:21 pm

เรียนท่าน อาจารย์ที่เคารบครับ ติดป้ญหานิดหน่อยตรงด้านด่างนี้ครับ ทำงานไม่ได้ตามต้องกานครับ ถ้าไม่เป็นกานรบกวนมากช่วยปรับให้หน่อยครับ
ขอบคุณล่วงหน้าครับ

Code: Select all

    Sheets("List").Range("BL" & targetRow + 7).FormulaR1C1 = "=VLOOKUP(R[5]C[-23],name,2,0)"
[/quote]

Re: เขียน VBA แยกหมวดสินค้า

#29

by snasui » Tue Dec 25, 2012 3:25 pm

:D ดูตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub Macro2()
    Application.ScreenUpdating = False
    
    Range("A1:AG11").Select
    Selection.Copy
    Range("AI1:BO1").Select
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

    Dim rAll As Range, r As Range
    Dim rSource As Range
    Dim lRow1 As Long, lRow2 As Long
    Dim header As Range

    
    Range("AH1:XFD" & Rows.Count).Clear
    Range("A12:AG12").Insert shift:=xlDown
    Range("A12:AG12").Select
    Range("A12") = "Col1"
    Range("A12").AutoFill Destination:=Range("A12:AG12"), Type:=xlFillDefault
    Range("G:G").Copy Range("AH:AH")
    Range("AH:AH").UnMerge
    Range("AH:AH").RemoveDuplicates Columns:=1, header:=xlYes
    Range("AH1:AH13").Insert shift:=xlDown
    With ActiveSheet
        Set Signature = Sheets("name").Range("H2:AN3")
        Set rAll = .Range("AH18", .Range("AH" & Rows.Count).End(xlUp))
        Set rSource = .Range("A12", .Range("A" & Rows.Count).End(xlUp)).Resize(, 33)
     End With
    For Each r In rAll
        Range("AH12").Formula = "=G13=" & r
        
        With ActiveSheet
    If .Range("AI1") = "" Then
        lRow = 1
    Else
        lRow = .Range("AI" & Rows.Count).End(xlUp).Row + 10 'Change 5 to the value what you want
    End If
    .Range("A1:AG11").Copy .Range("AI" & lRow).Resize(11, 33)
    lRow2 = .Range("AI" & Rows.Count).End(xlUp).Row + 1
    rSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .Range("AH11:AH12"), CopyToRange:=.Range("AI" & lRow2)
    .Range("AI" & lRow).Resize(11, 33) = .Range("AI" & lRow).Resize(11, 33).Value 'Add this line
    .Range("AI" & lRow2).Resize(, 33).Delete shift:=xlUp
    End With
    
    targetRow = Range("AI" & Rows.Count).End(xlUp).Row + 10
    Sheets("List").Range("BL" & targetRow + 7).FormulaR1C1 = "=VLOOKUP(R[5]C[-23],name,2,0)"
    Signature.Copy
    Sheets("List").Range("AI" & Rows.Count).End(xlUp).Offset(2, 0).PasteSpecial xlPasteAll
    
    Next r
    Range("AH:AH").Clear
    Range("A12:AG12").Delete shift:=xlUp
    
        Range("A1:AG11").Select
        Selection.Copy
        Range("AI1:BO1").Select
        Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Range("AI1:BO1").Select
        Application.CutCopyMode = False

    Application.ScreenUpdating = True
End Sub

Re: เขียน VBA แยกหมวดสินค้า

#28

by วังวู ช่ง » Tue Dec 25, 2012 2:30 pm

snasui wrote::D ที่เซลล์ O10 เปลี่ยนสูตรเป็น

=SUBTOTAL(9,O12:O28)

Enter > Copy ไปทางขวา อย่าลืมปรับช่วงในสูตรในตรงกับช่วงข้อมูลจริง

จากนั้น ลองปรับ Code มาดูก่อนครับ แนบ Code ที่ปรับมาเองแล้วมาด้วยครับ
ขอโทษมากครับ ท่าน อาจารย์ครับ ผมปรับแล้วแต่ปรับไม่เป็นเลียครับช่วยดู และปรับให้ด้วยครับคือ
1. คำตอบใน AT10:BN10 ไม่ตรงกับความต้องการ
2. คำตอบใน BM7:BO7... ไม่ตรงกรับความต้องกาน
ขอบคุณล่วงหน้า
Attachments
เขียน VBA แยกหมวดสินค้า.xlsm
(231.98 KiB) Downloaded 11 times

Re: เขียน VBA แยกหมวดสินค้า

#27

by snasui » Tue Dec 25, 2012 10:00 am

:lol: ครับผม อ่านที่นี่เพิ่มเติมด้วยครับ viewtopic.php?f=5&t=2806

Re: เขียน VBA แยกหมวดสินค้า

#26

by วังวู ช่ง » Tue Dec 25, 2012 9:57 am

ครับ ท่าน อาจารย์ครับ ผมจะลองทำก่อนอย่างไงจะแจ้งให้อีกทีครับ

Re: เขียน VBA แยกหมวดสินค้า

#25

by snasui » Mon Dec 24, 2012 9:41 pm

:lol: ควรจะปรึกษาผู้เขียน Code หรือให้ผู้เขียน Code ช่วยปรับให้ก่อน หากถึงที่สุดแล้วยังไม่ได้ตามที่ต้องการค่อยมาถามครับ

Re: เขียน VBA แยกหมวดสินค้า

#24

by วังวู ช่ง » Mon Dec 24, 2012 9:22 pm

รบกวนอีกครับ ท่าน อาจารย์ และสมาชิกที่รู้ทุกท่านครับ ทำไม่เอาข้อมูนจิงมาใส่ Code จิ่ง Run ไม่หมดครับ
รบกวนช่วยครับ ผมปรับ Code ใหม่จากของเพื่อนครับ

Code: Select all

Sub Sep()
Dim header As Range
Dim signature As Range

Sheets("ListEx").Range("AH:BZ").Clear
Set header = Range("A1:AG11")
Set signature = Sheets("Nsch").Range("H2:AN3")

srcRowNum = Sheets("List").Range("G" & Rows.Count).End(xlUp).Row
For itemRw = 12 To srcRowNum
If WorksheetFunction.CountIf(Range("G12:G" & itemRw), Cells(itemRw, "G").Value) = 1 Then
Cells(itemRw, "AH") = WorksheetFunction.Max(Range("AH:AH")) + 1
End If
Next itemRw

numOfItem = WorksheetFunction.Max(Range("AH:AH"))
For itemNo = 1 To numOfItem
selItem = Range("G" & WorksheetFunction.Match(itemNo, Range("AH:AH"), 0)).Value
targetRow = Range("AI" & Rows.Count).End(xlUp).Row + 10
header.Copy
Range("AI" & targetRow).PasteSpecial xlPasteAll
For Each sameItem In Range("G12:G" & srcRowNum)
If sameItem = selItem Then
Range("A" & sameItem.Row & ":AG" & sameItem.Row).Copy
Range("AI" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
End If
Next sameItem
firstRwSameItem = targetRow + 11
LastRwSameItem = Range("AI" & Rows.Count).End(xlUp).Row
fmlRw1 = targetRow + 9
fmlRw2 = targetRow + 10
For fmlCol = 49 To 66
Cells(fmlRw1, fmlCol) = WorksheetFunction.Sum(Range(Cells(firstRwSameItem, fmlCol).Address & ":" & Cells(LastRwSameItem, fmlCol).Address))
Cells(fmlRw2, fmlCol) = Cells(fmlRw1, fmlCol) * 3
Next fmlCol
Sheets("ListEx").Range("BL" & targetRow + 4).FormulaR1C1 = "=VLOOKUP(R[7]C[-23],name,2,0)"
signature.Copy
Sheets("ListEx").Range("AI" & Rows.Count).End(xlUp).Offset(2, 0).PasteSpecial xlPasteAll
Next itemNo
    Columns("AH:AH").Select
    Selection.ClearContents
    Range("AI1:BO10").Select
    Selection.Delete Shift:=xlUp
    Range("AI1:BO1").Select
End Sub
Attachments
Code VBA แยกประเพดสินค้า.xlsm
(177.03 KiB) Downloaded 9 times

Re: เขียน VBA แยกหมวดสินค้า

#23

by วังวู ช่ง » Thu Dec 13, 2012 9:00 pm

snasui wrote::D ที่เซลล์ O10 เปลี่ยนสูตรเป็น

=SUBTOTAL(9,O12:O28)

Enter > Copy ไปทางขวา อย่าลืมปรับช่วงในสูตรในตรงกับช่วงข้อมูลจริง
จากนั้น ลองปรับ Code มาดูก่อนครับ แนบ Code ที่ปรับมาเองแล้วมาด้วยครับ
ได้คำตอบที่ต้องกานแล้วครับส่วน ผมจะลองปรับ Code ก่อนครับ เพราะมีบ่อนเช็นอีกที่ก้องตาราง 5 บ่อนเช็นครับแบบนี้ครับ (ตามไฟล) ครับ
Attachments
เขียน VBA แยกหมวดสินค้า.xlsm
(66.9 KiB) Downloaded 12 times

Re: เขียน VBA แยกหมวดสินค้า

#22

by snasui » Thu Dec 13, 2012 5:17 pm

:D ที่เซลล์ O10 เปลี่ยนสูตรเป็น

=SUBTOTAL(9,O12:O28)

Enter > Copy ไปทางขวา อย่าลืมปรับช่วงในสูตรในตรงกับช่วงข้อมูลจริง

จากนั้น ลองปรับ Code มาดูก่อนครับ แนบ Code ที่ปรับมาเองแล้วมาด้วยครับ

Re: เขียน VBA แยกหมวดสินค้า

#21

by วังวู ช่ง » Thu Dec 13, 2012 3:11 pm

ขอโทษครับ อย่างอื่นผมปรับตามอาจารย์ได้ผนตามต้องกานแล้วครับ แต่ติดปัญหาเวลาใส่ข้อมูนจิงตรงที่ผนออกในแถว ลวม 1 เดือน และ ลวม 3 เดือน ไม่ตรงครับ คำตอบคือใน ListEx ครับ ขอบคุณล่วงหน้าครับ
ด้วยความนับถื
ผม สปปลาว

Code: Select all

Sub Macro2()
    Dim rAll As Range, r As Range
    Dim rSource As Range
    Dim lRow1 As Long, lRow2 As Long
    Application.ScreenUpdating = False
    Range("AH1:XFD" & Rows.Count).Clear
    Range("A12:AG12").Insert shift:=xlDown
    Range("A12:AG12").Select
    Range("A12") = "Col1"
    Range("A12").AutoFill Destination:=Range("A12:AG12"), Type:=xlFillDefault
    Range("G:G").Copy Range("AH:AH")
    Range("AH:AH").UnMerge
    Range("AH:AH").RemoveDuplicates Columns:=1, Header:=xlYes
    Range("AH1:AH13").Insert shift:=xlDown
    With ActiveSheet
        Set rAll = .Range("AH18", .Range("AH" & Rows.Count).End(xlUp))
        Set rSource = .Range("A12", .Range("A" & Rows.Count).End(xlUp)).Resize(, 33)
     End With
    For Each r In rAll
        Range("AH12").Formula = "=G13=" & r
        
        With ActiveSheet
    If .Range("AI1") = "" Then
        lRow = 1
    Else
        lRow = .Range("AI" & Rows.Count).End(xlUp).Row + 5 'Change 5 to the value what you want
    End If
    .Range("A1:AG11").Copy .Range("AI" & lRow).Resize(11, 33)
    lRow2 = .Range("AI" & Rows.Count).End(xlUp).Row + 1
    rSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .Range("AH11:AH12"), CopyToRange:=.Range("AI" & lRow2)
    .Range("AI" & lRow2).Resize(, 33).Delete shift:=xlUp
    End With
        
    Next r
    Range("AH:AH").Clear
    Range("A12:AG12").Delete shift:=xlUp
    Application.ScreenUpdating = True
End Sub
Attachments
เขียน VBA แยกหมวดสินค้า.xlsm
(66.38 KiB) Downloaded 10 times

Re: เขียน VBA แยกหมวดสินค้า

#20

by snasui » Thu Dec 13, 2012 10:17 am

:lol: ผม Run ได้เป็นปกติครับ ไม่ติดปัญหาใดครับ ส่วนที่เป็นตารางจำเป็นต้องปรับ Code มาเอง ติดตรงไหนค่อยมาถามกันครับ

หากเพียงแต่ Copy หัวตารางมาใช้ทั้งค่าและรูปแบบ สามารถปรับ Code เป็นด้านล่างครับ

Code: Select all

'Other code
With ActiveSheet
    If .Range("AI1") = "" Then
        lRow = 1
    Else
        lRow = .Range("AI" & Rows.Count).End(xlUp).Row + 5 'Change 5 to the value what you want
    End If
    .Range("A1:AG11").Copy .Range("AI" & lRow).Resize(11, 33)
    lRow2 = .Range("AI" & Rows.Count).End(xlUp).Row + 1
    rSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .Range("AH11:AH12"), CopyToRange:=.Range("AI" & lRow2)
    .Range("AI" & lRow2).Resize(, 33).Delete shift:=xlUp
End With
'Other code

Re: เขียน VBA แยกหมวดสินค้า

#19

by วังวู ช่ง » Thu Dec 13, 2012 9:25 am

เรียนท่าน อาจารย์ครับ รบกวนอีกครับ ผมพะยายามทำแต่ทำไม่ได้ครับ ช่วยปรับให้ด้วยครับ คือว่าผนออกมาอยากให้เหมือนตารางเดีมครับเชั่น AI1:BO11,AI20:BO30,AI38:BO48,AI54:BO64,AI73:BO83,AI92:BO102.....อยากให้เหมือนกับ A1:AG11 ครับ ตัวอย่างที่ต้องกาน เรียนท่านอาจารย์ดูที่ ListEx ครับ ขอบคุณอย่างสูงครับ
ด้วยความที่เคารบ และนับถื

Code: Select all

Sub Macro1()
    Dim rAll As Range, r As Range
    Dim rSource As Range
    Dim lRow1 As Long, lRow2 As Long
    Application.ScreenUpdating = False
    Range("AH1:XFD" & Rows.Count).Delete
    Range("A12:AG12").Insert shift:=xlDown
    Range("A12:AG12").Select
    Range("A12") = "Col1"
    Range("A12").AutoFill Destination:=Range("A12:AG12"), Type:=xlFillDefault
    Range("G:G").Copy Range("AH:AH")
    Range("AH:AH").UnMerge
    Range("AH:AH").RemoveDuplicates Columns:=1, Header:=xlYes
    Range("AH1:AH13").Insert shift:=xlDown
    With ActiveSheet
        Set rAll = .Range("AH18", .Range("AH" & Rows.Count).End(xlUp))
        Set rSource = .Range("A12", .Range("A" & Rows.Count).End(xlUp)).Resize(, 33)
    End With
    For Each r In rAll
        Range("AH12").Formula = "=G13=" & r
    With ActiveSheet
    If .Range("AI1") = "" Then
        lRow = 1
    Else
        lRow = .Range("AI" & Rows.Count).End(xlUp).Row + 5 'Change 5 to the value what you want
    End If
    .Range("AI" & lRow).Resize(11, 33) = .Range("A1:AG11").Value
    lRow2 = .Range("AI" & Rows.Count).End(xlUp).Row + 1
    rSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .Range("AH11:AH12"), CopyToRange:=.Range("AI" & lRow2)
    .Range("AI" & lRow2).Resize(, 33).Delete shift:=xlUp
        End With
    Next r
    Range("AH:AH").Clear
    Range("A12:AG12").Delete shift:=xlUp
    Application.ScreenUpdating = True
End Sub
Attachments
เขียน VBA แยกหมวดสินค้า.xlsm
(45.23 KiB) Downloaded 31 times

Re: เขียน VBA แยกหมวดสินค้า

#18

by วังวู ช่ง » Wed Dec 12, 2012 10:31 pm

snasui wrote::D ศึกษาการ Looping จากตัวอย่างที่ผมเคยเขียนให้ไปหรือจากตัวอย่างในฟอรัมนี้ซึ่งมีจำนวนมาก เพื่อดูว่ามีหลักการ Loop อย่างไร แล้วปรับมาดูกัน ได้เท่าไรก็เท่านั้น ลำพังบันทึก Macro อย่างเดียวไม่อาจช่วยได้สำหรับข้อมูลที่เป็น Dynamic ครับ
ขอบคุณท่าน อาจารย์ครับ ผมลองดูก่อนอย่างไลจะมาแจ้งให้อีกทีครับ

Re: เขียน VBA แยกหมวดสินค้า

#17

by snasui » Wed Dec 12, 2012 10:09 pm

:D ศึกษาการ Looping จากตัวอย่างที่ผมเคยเขียนให้ไปหรือจากตัวอย่างในฟอรัมนี้ซึ่งมีจำนวนมาก เพื่อดูว่ามีหลักการ Loop อย่างไร แล้วปรับมาดูกัน ได้เท่าไรก็เท่านั้น ลำพังบันทึก Macro อย่างเดียวไม่อาจช่วยได้สำหรับข้อมูลที่เป็น Dynamic ครับ

Re: เขียน VBA แยกหมวดสินค้า

#16

by วังวู ช่ง » Wed Dec 12, 2012 10:01 pm

snasui wrote:
วังวู ช่ง wrote:และรบกวนท่านอาจารย์ช่วยปรับ Code ลุ่มนี้ให้ด้วยครับ ปัญหาคือถ้าข้อมูนมากกว่านี้จะหยุ้งมากครับ และที่ก้องของทุกตารางมีบ่อนเชันของพากส่วนต่างๆตาม File ครับ
ลองปรับมาเองดูก่อนครับ ปกติผมจะปรับเฉพาะที่ติดปัญหา Code ที่ใช้การได้แล้วถือว่าไม่ได้เป็นปัญหา ไม่ว่ามันจะสั้นหรือยาวอย่างไรก็ตาม :mrgreen:
เรียนท่าน อาจารย์รครับ Code นี้ผมได้จากการ Record Macro สามาด Format Painter ได้แต่ 6 ตารางครับ จริงๆแล้วมากกว่านี้ครับ

Code: Select all

Sub FormatPainter()
    Range("A1:AG11").Select
    Selection.Copy
    Range("AI1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy
    Range("AI20").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy
    Range("AI38").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy
    Range("AI54").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy
    Range("AI73").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy
    Range("AI92").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("AI1:BO1").Select
End Sub
Attachments
เขียน VBA แยกหมวดสินค้า.xlsm
(45.23 KiB) Downloaded 13 times

Re: เขียน VBA แยกหมวดสินค้า

#15

by snasui » Wed Dec 12, 2012 9:48 pm

วังวู ช่ง wrote:และรบกวนท่านอาจารย์ช่วยปรับ Code ลุ่มนี้ให้ด้วยครับ ปัญหาคือถ้าข้อมูนมากกว่านี้จะหยุ้งมากครับ และที่ก้องของทุกตารางมีบ่อนเชันของพากส่วนต่างๆตาม File ครับ
ลองปรับมาเองดูก่อนครับ ปกติผมจะปรับเฉพาะที่ติดปัญหา Code ที่ใช้การได้แล้วถือว่าไม่ได้เป็นปัญหา ไม่ว่ามันจะสั้นหรือยาวอย่างไรก็ตาม :mrgreen:

Re: เขียน VBA แยกหมวดสินค้า

#14

by snasui » Wed Dec 12, 2012 9:42 pm

:D ลองปรับเป็นด้านล่างครับ

Code: Select all

'Other code
With ActiveSheet
    If .Range("AI1") = "" Then
        lRow = 1
    Else
        lRow = .Range("AI" & Rows.Count).End(xlUp).Row + 5 'Change 5 to the value what you want
    End If
    .Range("AI" & lRow).Resize(11, 33) = .Range("A1:AG11").Value
    lRow2 = .Range("AI" & Rows.Count).End(xlUp).Row + 1
    rSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .Range("AH11:AH12"), CopyToRange:=.Range("AI" & lRow2)
    .Range("AI" & lRow2).Resize(, 33).Delete shift:=xlUp
'Other code
End With

'Other code

Top