: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
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

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: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#23

by StartlearningVBA » Tue Feb 22, 2011 3:47 pm

ขอบคุณมากๆ เลยค่ะ เดี๋ยวจะลอง Run ดู แล้วจะรีบแจ้งผลค่ะ

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#22

by snasui » Tue Feb 22, 2011 3:09 pm

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

Code: Select all

Option Explicit

Sub SelectDataLessThanThree()
With Worksheets("data1")
    .Range("CC2:CC65536").ClearContents
    .Sort.SortFields.Add Key:=Range("N5:N50"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .Range("A5:V50").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        .Range("CB1:CB2"), Unique:=False
    .Range("B5:B50").SpecialCells(xlCellTypeVisible).Copy
    .Range("CC1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    .ShowAllData
End With
    CodeFindBox
End Sub

Sub CodeFindBox()
Dim r As Range, rt As Range, rt1 As Range, rt2 As Range
Dim i As Integer
With Worksheets("data1")
    Set r = .Range(.Range("CC2"), .Range("CC65536").End(xlUp))
    Set rt2 = .Range("L6")
End With
Set rt1 = Worksheets("BoxList").Range("B65536").End(xlUp).Offset(1, 0)
For i = 1 To r.Count
    With Worksheets("TempQty")
            .Range("A1:J65536").ClearContents
    End With
    With Worksheets("box")
        .Range("AB3") = r(i)
        .Range("E1:M100").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        .Range("AB1:AB2"), Unique:=False
        Set rt = .Range("M2:M100").SpecialCells(xlCellTypeVisible).Range("A1")
        Set rt1 = Worksheets("BoxList").Range("B65536").End(xlUp).Offset(1, 0)
        .Range("AC3") = rt: rt1 = rt
        .Range("E1:M100").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        .Range("AC1:AC2"), Unique:=False
        .Range("A1:M100").SpecialCells(xlCellTypeVisible).Copy
            With Worksheets("TempQty")
                .Range("A1").PasteSpecial xlPasteValues
                .Range("M2:M46").Copy: rt2.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd
            End With
        .Range("A2:M100").SpecialCells(xlCellTypeVisible).ClearContents
        .ShowAllData
        End With
 Next
End Sub

Sub LoopProcedure()
Dim r As Range
Set r = Worksheets("data1").Range("CB3")
Do While r > 0
    SelectDataLessThanThree
Loop
End Sub

Attachments
MacroOpen9_BreakLink.xls
(232.5 KiB) Downloaded 12 times

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#21

by StartlearningVBA » Tue Feb 22, 2011 11:51 am

ขอบคุณค่ะ ที่ให้คำแนะนำ จะนำไปปรับปรุงในครั้งหน้า หรือครั้งต่อๆ ไป เนื่องจากเป็นมือใหม่
เลยยังไม่ทราบว่า ต้องเริ่มยังไงให้คนอื่นเค้าเข้าใจเราได้ง่ายๆ

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#20

by snasui » Mon Feb 21, 2011 6:19 pm

:D การบันทึก Macro ควรบันทึกเป็นท่อน ๆ ครับเพื่อให้ง่ายต่อการปรับปรุง ผมทำตัวอย่างมาให้ดูตามไฟล์แนบ

สำหรับเรื่องการ Loop หากมีเวลาจะช่วยดูให้ครับ
Attachments
MacroOpen9_BreakLink.xls
(208 KiB) Downloaded 13 times

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#19

by StartlearningVBA » Mon Feb 21, 2011 3:34 pm

ถ้าผิดพลาดตรงส่วนไหนต้องขออภัยด้วยนะคะ ได้ส่ง ไฟล์ พร้อม Code มาให้แล้วค่ะ
ถ้ายังสงสัยตรงส่วนไหน บอกได้นะคะ
Attachments
MacroOpen21.2.11.zip
(393.08 KiB) Downloaded 4 times

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#18

by StartlearningVBA » Wed Feb 16, 2011 9:49 pm

จากนั้น กลับมาที่ Sheet"box" ซึ่งจะยังค้างหน้าจอที่ติด filter ของ box ที่นำไปเปิดอยู่ ในหน้านี้จะ Delete ข้อมูล Code และ Box no. ออก
เพราะป้องกันการใช้ซ้ำ หรือจะ Delete ออกทั้งแถวเลยก็ได้ค่ะ และที่ Sheet"TempBox" และ "TempQty" ก็จะลบข้อมูลออกเหมือนกันเพื่อที่ว่า
เมื่อมาทำการ Run รอบถัดไป ข้อมูลจะได้ไม่ผิด เป็นอันเสร็จไป 1 รอบ แล้วกลับไปเช็คเงื่อนไขแรก อีกรอบ ทำจนกว่า Colum "M" ใน Sheet "data1" จะได้ค่ามากกว่า 3 ค่ะ

Sheets("box").Select
Range("E10:E99").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.ClearContents
Range("M10").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("E34").Select
Selection.AutoFilter
Range("E3").Select

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#17

by StartlearningVBA » Wed Feb 16, 2011 9:39 pm

จากนั้น กลับไปที่ Sheet "data1" ทำการแทรกขึ้นมาอีก 2 Colum ต่อจาก colum"L"
จะได้ Colum"M"และ "N" มา เพื่อเอามาไว้ บวก ตัวเลข ในช่องของ Colum "L"
จะได้ code vba ดังนี้ค่ะ

Sheets("data1").Select
Selection.AutoFilter (จะทำการ เคลียร์ filter ออกไปก่อน)
Columns("M:N").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("M6").Select (มาทำการ Vlookup Code ที่เหมือนกันให้เอาตัวเลข ปริมาณมาใส่ โดย Vlookup ที่ Sheet"data1" กับSheet"Tempbox)
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-11],TempBoxNo!R2C5:R[2]C[-6],3,0)"
Selection.AutoFill Destination:=Range("M6:M50")
Range("M6:M50").Select (เนื่องจากค่าที่ได้เป็นสูตร Vlookup จะบวกลบ กันไม่ได้ จึงต้องทำการ Copy ข้อมูลไปไว้ที่ Sheet"TempQty" โดยเลือกวาง PasteSpecial เลือก Values)
Selection.Copy
Sheets("TempQty").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Selection.AutoFilter (ทำการ Filter เลือกเอาเฉพาะค่าที่ติด #N/A)
ActiveSheet.Range("$A$2:$A$46").AutoFilter Field:=1, Criteria1:="#N/A" ( จากนั้น ทำการเปลี่ยน#N/A ให้เป็น 0 แล้วเครียร์ฟิวเตอร์)
Range("A3").Select
ActiveCell.FormulaR1C1 = "0"
Range("A3").Select
Selection.FillDown
Selection.AutoFilter
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy (ทำการ Copy ข้อมูลทั้งหมดกลับมาวางแทนที่ ค่าเดิมใน Sheet"data1" ใน Colum"M" ตั้งแต่ "M6" ลงไป)
Sheets("data1").Select
Range("M6").Select
ActiveSheet.Paste
Range("N6").Select (จากนั้น มาที่ Colum"N" ที่ Range"N6" ทำการ เอาค่ามาบวกกัน ระหว่างค่าเดิมใน Colum"L" กับค่าใหม่ที่หามาได้ใน "M" )
Range("N6").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]" (N6 คือสูตร =L6+M6 ไล่ลงมาเรื่อย)
Range("N6").Select
Range(Selection, Selection.End(xlDown)).Select (เนื่องจากเป็นค่าที่ติดสูตร จึงต้องทำการ copy แล้วPasteSpecial เลือกValues)
Selection.Copy
Range("L6").Select (จากนั้นเอาค่าไปวางแทนที่เดิมใน Colum"L" เพื่อแทนค่าเดิม)
ActiveSheet.Paste
Columns("M:N").Select (จากนั้นทำการ Delete colum"M","N" ออกไปเพราะใช้เสร็จแล้ว และต้องการดูค่า ใน Colum"M" ที่เปลี่ยนไปตามเงื่อนไขแรก)
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#16

by snasui » Wed Feb 16, 2011 8:59 pm

:) ผมเองก็งานมหาศาลเช่นกัน เอาเป็นว่าเสร็จเมื่อไรก็ส่งไฟล์มาก็แล้วกัน ดีกว่าให้ผมมาต่อ code เองครับ

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#15

by StartlearningVBA » Wed Feb 16, 2011 8:50 pm

ยังไม่หมดนะคะ เหลือต่ออีกนิด พอดีมีงานด่วนเข้ามาค่ะ เลยโพสไม่เสร็จ

แต่ใช้ ไฟล์เดิมที่ส่งไปให้นั่นแหละค่ะ มา Run ต่อค่ะ

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#14

by snasui » Wed Feb 16, 2011 7:06 pm

:shock: ช่วยส่งไฟล์ตัวอย่างที่มี Code ล่าสุดอยู่แล้วมาด้วยครับ

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#13

by StartlearningVBA » Wed Feb 16, 2011 11:55 am

จากนั้น มาที่ Sheet "TempBox" เพื่อวาง ข้อมูลของ Box ที่ Copy มา โดยเลือกวางแบบ PasteSpecial เลือก Values

Sheets("TempBox").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("M2").Select (คือ copy หมายเลข box มา)
Application.CutCopyMode = False
Selection.Copy

แล้วเอาหมายเลข Box นั้นมาวาง ใน Sheet "BoxList" ตรงช่อง B2 (ถ้าได้ box ที่ 2 มา ก็มาวางใน B3 ถัดลงมาเรื่อย)
Sheets("BoxList").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#12

by StartlearningVBA » Wed Feb 16, 2011 10:31 am

จากนั้น มาดูเงื่อนไขแรก คือ ต้องการเอาค่าที่ติดลบมากที่สุดมาทำก่อน โดยดูที่ Sheet "data1"
ติดฟิวเตอร์ก่อนที่แถวที่ 5 แล้วทำการ Sort by A to Z ใน Colum "N"
เลือก ค่า Code ในช่อง B6 คือแถวแรกเพราะติดลบมากสุด (แต่ตามตัวอย่างขอเลื่อนไป B7 เพราะ เดี๋ยวพอไป sheet"box" จะมองเป็นภาพไม่ชัดเจน)

Sheets("data1").Select
Rows("5:5").Select
Selection.AutoFilter
ActiveWorkbook.Worksheets("data1").AutoFilter.Sort.SortFields.Add Key:=Range( _
"N5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("data1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

เมื่อได้ Code มาแล้ว Copy code นั้นไปหา find หาใน sheet"box"

Range("B7").Select
Selection.Copy
Sheets("box").Select
Rows("1:1").Select
ActiveSheet.Range("$A$1:$Y$100").AutoFilter Field:=5, Criteria1:= _
"=96628634", Operator:=xlAnd (อันนี้ฟิวเตอร์หา code ใน colum"e")
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("box").AutoFilter.Sort.SortFields.Clear (แล้วเคลียร์ฟิวเตอร์ออกมาก่อน)
ActiveWorkbook.Worksheets("box").AutoFilter.Sort.SortFields.Add Key:=Range( _
"J1:J100"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("box").AutoFilter.Sort (จากนั้น มาทำการ Sort by A to Zที่ colum"j")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
จากนัั้น เลือก Box ที่อยู่บนสุด คือ "M53" ใน Sheet "box" นี่แหละ
Range("M53").Select
Selection.Copy
Application.CutCopyMode = False
Selection.AutoFilter (จากนั้นทำการ ฟิวเตอร์ เอาเฉพาะ Box no. นี้ มา)
Selection.Copy
ActiveSheet.Range("$A$1:$Y$100").AutoFilter Field:=13, Criteria1:= _
"=FCIU8103005", Operator:=xlAnd
Range("A1").Select (จากนั้น ทำการ Copy ข้อมูที่โชว์ทั้งหมดนี้ ไปวางใน Sheet "TempBox"คือจะได้ code ทั้งหมดที่มีอยู่ใน box นั้นมา)
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#11

by StartlearningVBA » Wed Feb 16, 2011 10:05 am

อันดับแรกจะเพิ่ม Sheet ขึ้นมา 3 Sheet ดังนี้
1. sheet"TempBox" เพื่อพักข้อมูลรายละเอียดใน Box
2. sheet"TempQty" เพื่อพักข้อมูลรายละเอียดของปริมาณ
3. sheet"BoxList" เพื่อใส่ผลลัพท์ที่ต้องการ และใน sheet นี้ ก็จะใส่หัวข้อไว้รอ
ดังรายละเอียดข้างล่างค่ะ

Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "TempBox"
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "TempQty"
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "BoxList"
Range("B1").Value = "Box open Day1"
Range("C1").Value = "Box open Day2"
Range("D1").Value = "Box open Day3"

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#10

by StartlearningVBA » Tue Feb 15, 2011 2:04 pm

ก็ กลัวจะงง อยู่เหมือนกันค่ะ
เดี๋ยวจะ Record ไปให้ดูนะคะ
เพราะว่า หลายขั้นตอนมากเหมือนค่ะ

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#9

by snasui » Tue Feb 15, 2011 1:36 pm

:D
StartlearningVBA wrote:ใน sheet "data1" แถวที่ 5 จะเป็นหัวข้อ บอกไว้ colum"K" คือ Day1
colum"O" =Day2, colum"S"=Day3 ถ้าเอาจำนวนมาใส่ใน colum"L" นั่นหมายถึง
เป็นช่วง Day1
แล้วมาดูใน Sheet"BoxList(Result)" ก็เอาหมายเลข box มาใส่ให้ตรงหัวข้อวัน เช่น
ใส่วันแรก Day 1 ก็ใส่ใน Colum"B" แล้วก็เรียงต่อไปเรื่อยๆ box ไหนมาก่อน
ก็ให้อยู่บนสุดแล้วต่อลงมาเรื่อยๆ ถ้าเปิดในวันที่ 2 ก็เอามาใส่ใน Colum"C" ค่ะ
StartlearningVBA wrote:เมื่อได้ box มาเปิดแล้ว มาดูรายละเอียดว่า box นั้น มีกี่ Code อะไรบ้าง จำนวนเท่าใด สมมุติว่ามี 10 code (โดยการฟิวเตอร์ที่ box นั้น) เอาทั้ง 10 code นั้นไปเช็คใน sheet "data1"
ให้ยึดที่ sheet "data1" เป็นหลัก ถ้ามี code ไหน ตรงกับใน sheet "data1" ให้เอาปริมาณที่ได้จาก sheet "box" ตาม code เดียวกัน มาบวกเพิ่ม ใน colum"L" ของ sheet "data1" ถ้า code ไหนไม่ตรง ก็ทิ้งไป สมมุติว่าตรงกัน 7 Code ก็ ใช้แค่ตัวเลข ปริมาณบวกเข้าไปใน colum"L" ของ sheet "data1" แค่ 7 code เท่านั้น
แล้วก็ทำอย่างนี้ไปเรื่อยๆ จนกว่า Colum"N" จะได้ค่ามากกว่า 3 แล้วค่อยย้ายไปทำช่วงที่2 (หรือ วันที่2) ในช่วง Colum "P:R" หรือจนกว่า ข้อมูลใน Sheet"box" หมด โดยส่วนตัวถ้าใช้แล้ว Box ไหนแล้ว จะ ลบทิ้งไปเพื่อป้องการการใช้ซ้ำค่ะ
ผมอ่านแล้วยังไม่ Clear คิดว่าน่าจะเปลี่ยนวิธีการในการแก้ปัญหาเพื่อสามารถเดินหน้าไปได้ โดยให้คุณ Record Macro มาทีละขั้นตอนทีละงาน ไม่ควรทำการ Record มารวดเดียวตั้งแต่ต้นจนจบเหมือนที่ทำมา ผมจะได้ทดสอบ Code ที่ได้บันทึกมาดูว่าทำงานอย่างไร มีขั้นตอนใดที่ต้องการ Loop ก็จะได้เขียนเพิ่มกันในภายหลัง สำหรับ Code ที่ได้บันทึกมาแล้วนั้นไม่สามารถติดตามตรวจสอบได้เนื่องจาก Run แล้วติดขัดครับ :mrgreen:

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#8

by StartlearningVBA » Tue Feb 15, 2011 9:54 am

เมื่อได้ box มาเปิดแล้ว มาดูรายละเอียดว่า box นั้น มีกี่ Code อะไรบ้าง จำนวนเท่าใด สมมุติว่ามี 10 code (โดยการฟิวเตอร์ที่ box นั้น) เอาทั้ง 10 code นั้นไปเช็คใน sheet "data1"
ให้ยึดที่ sheet "data1" เป็นหลัก ถ้ามี code ไหน ตรงกับใน sheet "data1" ให้เอาปริมาณที่ได้จาก sheet "box" ตาม code เดียวกัน มาบวกเพิ่ม ใน colum"L" ของ sheet "data1" ถ้า code ไหนไม่ตรง ก็ทิ้งไป สมมุติว่าตรงกัน 7 Code ก็ ใช้แค่ตัวเลข ปริมาณบวกเข้าไปใน colum"L" ของ sheet "data1" แค่ 7 code เท่านั้น
แล้วก็ทำอย่างนี้ไปเรื่อยๆ จนกว่า Colum"N" จะได้ค่ามากกว่า 3 แล้วค่อยย้ายไปทำช่วงที่2 (หรือ วันที่2) ในช่วง Colum "P:R" หรือจนกว่า ข้อมูลใน Sheet"box" หมด โดยส่วนตัวถ้าใช้แล้ว Box ไหนแล้ว จะ ลบทิ้งไปเพื่อป้องการการใช้ซ้ำค่ะ

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#7

by StartlearningVBA » Tue Feb 15, 2011 7:58 am

ใน sheet "data1" แถวที่ 5 จะเป็นหัวข้อ บอกไว้ colum"K" คือ Day1
colum"O" =Day2, colum"S"=Day3 ถ้าเอาจำนวนมาใส่ใน colum"L" นั่นหมายถึง
เป็นช่วง Day1
แล้วมาดูใน Sheet"BoxList(Result)" ก็เอาหมายเลข box มาใส่ให้ตรงหัวข้อวัน เช่น
ใส่วันแรก Day 1 ก็ใส่ใน Colum"B" แล้วก็เรียงต่อไปเรื่อยๆ box ไหนมาก่อน
ก็ให้อยู่บนสุดแล้วต่อลงมาเรื่อยๆ ถ้าเปิดในวันที่ 2 ก็เอามาใส่ใน Colum"C" ค่ะ

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#6

by snasui » Sun Feb 13, 2011 12:34 pm

:D อันนี้เป็นคำอธิบายจากไฟล์ที่แนบมา
StartlearningVBA wrote:แล้วเอาคCODE ใน Colum"B"ทีอยู่ในแถวเดียวกัน ไป find หา
ใน Sheet "box" เพื่อต้องการทราบว่า Code นี้ มีใน Box No ไหนบ้าง
จำนวนเท่าไหร่ เมื่อ Box ถูกใช้แล้ว จะใช้ซ้ำอีกไม่ได้ เอาหมายเลข Box มาเก็บไว้ในSheet "Result" ตามวัน ให้ตรงกับหัวบนคอลัมน์
ที่ชีท Box ไปหาจากคอลัมน์ E ซึ่งเป็น Code เหมือนกันใช่หรือไม่ครับ ชีท Result ที่อ้างถึงน่าจะเป็นชีท BoxList(Result) ตามไฟล์ที่แนบมา

การหาให้หาด้วย Code แต่การนำไปใช้ให้นำหมายเลข Box ไปใช้ และเมื่อนำหมายเลข Box ไปใช้แล้วให้ลบทิ้ง หากมีซ้ำกันหลายหมายเลขก็ลบทิ้งทุกหมายเลข

คำถาม แล้วจะทราบได้อย่างไรว่าหมายเลข Box ที่ได้นั้นต้องวางในคอลัมน์ใดในชีท BoxList(Result) :?:

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#5

by StartlearningVBA » Sat Feb 12, 2011 10:50 pm

ต้องขอโทษด้วยค่ะ ที่มาตอบกระทู้ช้าไปหน่อยค่ะ เนื่องจากติดภาระกิจหลายอย่าง
ถ้าทำแบบ manual จะเริ่มจาก การ
1.ใน sheet "data1" เลือก filter ที่แถวที่ 5 แล้ว Sort by A to Z ที่ Colum"n"
จากนั้นให้เลือก ค่าที่น้อยที่สุด ซึ่งบางครั้งอาจมีซ้ำกันมากกว่า1 เลือกมาค่าใดค่าหนึ่ง ปกติจะเลือกแถวบนสุด
2. เลือกเอา Code ใน Colum"B" แถวบนสุดมา สมมุติว่า เป็น "B7" = 96628634 เอาค่านี้ไปหาในขั้นตอนต่อไป

Re: ขอCoce คำสั่งในการให้หาค่า ที่ตัวแปรเปลี่ยนไปเรื่อยๆ

#4

by snasui » Thu Feb 10, 2011 1:57 pm

StartlearningVBA wrote:Sheet1 คือ sheet"data1" ค่ะ
ถ้าเอาตัวเลข จาก Sheet "box" ใน Colum "G" ที่ Code เดียวกัน
มาใส่ใน Sheet"data1" colum"L"(Del)
ตัวเลขใน Colum"N"(DOH) ก็จะเปลี่ยนไปค่ะ
ทำจนกว่า ตัวเลขใน Colum"N","R","V" (DOH) มีค่ามากว่า 3 ค่ะ
เพราะใช้ Code เป็นตัวเชื่อม ระหว่าง 2 Sheet ค่ะ
ไม่แน่ใจว่า จะ งง หรือเปล่าคะ
ผมจะเว้นคำอธิบายในไฟล์ไปก่อนนะครับ เดี๋ยวจะสับสน จากที่อธิบายมาตามด้านบน ขอถามว่า ด้วยวิธีการทำงานปกติ นำค่าใน Code เดียวกันมาใส่ด้วยวิธีใดครับ :?:

Top