: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 แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

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 แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#24

by aueijung » Sun Mar 22, 2015 3:40 pm

:thup: :cp: ขอบคุณมากครับอาจารย์ ใช้ได้เลยครับไม่มีปัญหาใดเลยครับ นั่งเครียดอยู่ 2-3 วัน เริ่มจะเข้าใจ แนวคิดที่อาจารย์แก้ปัญหาให้บ้างแล้วครับ

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#23

by snasui » Sun Mar 22, 2015 2:49 pm

:D ตัวอย่าง Code ครับ

Code: Select all

Sub GA_Click()
    Dim i%, j%
    j = 7
    With Sheets("รายงานผลการเรียน-Miterm")
        For i = 1 To .Range("Q2").Value
                .Range("f4").Value = i
                Sheets("เกรดเฉลี่ย").Cells(j, "g").Value = _
                    .Range("F25").Value
                j = j + 1
        Next i
    End With
End Sub

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#22

by aueijung » Sun Mar 22, 2015 10:23 am

:mrgreen: จะปรับอย่างไรให้ค่าเซลล์ F4 เพิ่มค่าทีละ 1 และค่ามากสุดไม่เกินค่าของเซลล์ Q2 ครับอาจารย์

Code: Select all

Sub GA_Click()
Dim sheet As Worksheet, Sum, j As Integer
j = 7
Sum = 0
        For i = Sheets("รายงานผลการเรียน-Miterm").Range("F4") To Sheets("รายงานผลการเรียน-Miterm").Range("Q2")
         Sum = Sheets("รายงานผลการเรียน-Miterm").Range("F4") + i
                         If Sheets("รายงานผลการเรียน-Miterm").Range("F4") = "1" Then
                                Sheets("เกรดเฉลี่ย").Cells(j, "g").Resize(1, 1).Value = _
                                Sheets("รายงานผลการเรียน-Miterm").Range("F25").Value
                                j = j + 1
                        Else
                                'Sheets("รายงานผลการเรียน-Miterm").PrintOut Preview:=True
                        End If
        Next i
End Sub
Attachments
AVG.xlsm
(80.48 KiB) Downloaded 4 times

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#21

by snasui » Sat Mar 21, 2015 10:50 pm

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

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#20

by aueijung » Sat Mar 21, 2015 9:27 pm

:mrgreen: อาจารย์ครับใช้ได้ดีมากครับ แต่ว่า พอเรากดปุ่ม พิมพ์ มันจะทำลายสูตร(สูตรหายไปหมดหลังจากกดปุ่มพิม์)ในชีท รายงานผลการเรียน-Miterm เซลล์ F7:F24 และเซลล์ N7:N24 มันเป็นเพราะอะไรหรือครับสูตรถึงหายไปครับอาจารย์ และจากปกติปริ้นตามกำหนดเลขที่ได้มันออกมาหนึ่งหน้ามีเลขที่ทั้ง เซลล์ F4 และเซลล์ N4 (กดปุ่มพิมพ์ออกมา ไม่มี 2 เลขที่เหมือนเดิม ที่เป็นหน้าคู่ เพื่อประหยัดกระดาษ 1 แผ่นต้องมี 2 เลขที่ แต่กลับมีเลขที่เดียวในสองฝั่ง) งงมากๆ ครับตอนนี้

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#19

by snasui » Sat Mar 21, 2015 6:18 pm

:D หากมาคลิกปุ่มที่ชีท เกรดเฉลี่ย ต้องเปลี่ยน Code ใหม่จาก With ActiveSheet เป็น With Sheets("รายงานผลการเรียน-Miterm") ครับ

Re: VBA คัดลอกค่าข้อมูลที่เปลี่ยนไปตามเงื่อนไข

#18

by aueijung » Sat Mar 21, 2015 4:44 pm

:mrgreen: หลังการปรับ ก็ยังดึงค่าได้แค่ทีละ 2 ค่า ครับอาจารย์ เราสามารถดึงค่าแบบครบทุกเลขที่ได้หรือไม่ครับอาจารย์ โดยการกดปุ่มเพียงครั้งเดียวครับ
Attachments
AVG.xlsm
(80.8 KiB) Downloaded 9 times

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#17

by snasui » Sat Mar 21, 2015 3:52 pm

:D ตัวอย่าง Code เฉพาะส่วนที่ปรับปรุงครับ

Code: Select all

If Sheets("รายงานผลการเรียน-Miterm").Range("Q22") = "พิมพ์ทันที" Then
    Sheets("เกรดเฉลี่ย").Range("g6").Offset(Sheets("รายงานผลการเรียน-Miterm").Range("f4").Value, 0) = _
        Sheets("รายงานผลการเรียน-Miterm").Range("F25")
    If Sheets("รายงานผลการเรียน-Miterm").Range("N4").Value <> "" Then
        Sheets("เกรดเฉลี่ย").Range("g6").Offset(Sheets("รายงานผลการเรียน-Miterm").Range("n4").Value, 0) = _
            Sheets("รายงานผลการเรียน-Miterm").Range("N25")
    End If
Else

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#16

by aueijung » Sat Mar 21, 2015 3:20 pm

:mrgreen: ถ้าเราจะให้เซลล์ F4 ที่ชีทรายงานผลการเรียน-Miterm มันมาเช็คค่ากับเซลล์ B7 ที่ชีทเกรดเฉลี่ย ว่าถ้าเลขที่เท่ากัน ก็ให้คัดลอกค่าเซลล์ F25 ไปกรอกที่เซลล์ B7 ที่ชีท เกรดเฉลี่ย แล้วเพิ่มค่า F4 ที่ชีทรายงานผลการเรียน-Miterm เปรียบเทียบกับค่ากับเซลล์ B7 ที่ชีทเกรดเฉลี่ย ในลำดับถัดมา ว่าถ้าเลขที่เท่ากัน ก็ให้คัดลอกค่าเซลล์ F25 ไปกรอกที่เซลล์ B8 ที่ชีท เกรดเฉลี่ย วนไปเรื่อยๆ จนถึงเลขที่สุดท้ายที่เป็นค่าตัวเลข ที่แสดงในเซลล์ B7:B61 โดยไม่ต้องไปเช็คกับคำว่า "พิมพ์ทันที" ก็ได้ครับ(มองแต่เฉพาะข้อมูลที่เราจะสรุปเป็นค่าของตัวเลขจากเซลล์ F25 เพื่อเอาไปกรอกเท่านั้นครับ) ถ้าไม่เท่ากันก็ให้หยุดการทำงาน ต้องทำการปรับตรงไหนบ้างครับอาจารย์

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#15

by snasui » Sat Mar 21, 2015 1:17 am

:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub GA_Click()
    Dim sheet As Worksheet, j As Integer
    Dim iStart%, iStop%, i%
    'j = 7
    With ActiveSheet
        iStart = .Range("Q18")
        iStop = .Range("Q20")
        For i = iStart To iStop Step 2
            .Range("F4") = i
            .Range("N4") = IIf(iStop >= i + 1, i + 1, "")
            If Sheets("รายงานผลการเรียน-Miterm").Range("Q22") = "พิมพ์ทันที" Then
                Sheets("เกรดเฉลี่ย").Range("g" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
                    Sheets("รายงานผลการเรียน-Miterm").Range("F25")
                If Sheets("รายงานผลการเรียน-Miterm").Range("N4").Value <> "" Then
                    Sheets("เกรดเฉลี่ย").Range("g" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
                        Sheets("รายงานผลการเรียน-Miterm").Range("N25")
                End If
            Else
                Sheets("รายงานผลการเรียน-Miterm").PrintOut Preview:=True
            End If
            ' Sheets("รายงานผลการเรียน-Miterm").PrintOut Preview:=True
        Next i
        ' Sheets("รายงานผลการเรียน-Miterm").PrintOut Preview:=True
    End With
End Sub

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#14

by aueijung » Sat Mar 21, 2015 12:53 am

:mrgreen: ชีท เกรดเฉลี่ย เซลล์ G7:G61 แสดงข้อมูลแค่เพียงค่าเดียวเองครับอาจารย์ มันไม่แสดงข้อมูลจนครบทุกคน เราจะแก้ไขอย่างไรครับอาจารย์
Attachments
AVG.xlsm
(80.74 KiB) Downloaded 8 times

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#13

by snasui » Fri Mar 20, 2015 6:15 pm

:D การให้ได้ค่าทั้งหมดตามตัวอย่างที่แนบมาได้นั้นต้อง Loop ด้วย VBA

ลองเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#12

by aueijung » Fri Mar 20, 2015 5:23 pm

ค่าได้นั้นมาจาก เมื่อเราเปลี่ยน .....อ่อ......ครับอาจารย์เราจะทำอย่างไรให้ได้ข้อมูลของทุกๆ เลขที่ ตั้งแต่ เลขที่ 1 ถึง เลขที่สุดท้าย เมื่อเราเปลี่ยนเลขที่ ที่เซลล์ F4 ชีทรายงานผลการเรียน-Miterm แล้วให้มันเปลี่ยนอัติโนมัติ เพื่อดึงเอาค่า F25 มาใส่ที่เซลล์ G4 ถึง G55 ที่ชีทเกรดเฉลี่ย ให้มันวนรอบนำค่ามาแสดงจนครบทุกเลขที่ กลายเป็นข้อมูลแทนที่เราจะมาทำการเปลี่ยนเลขที่เอง คือให้มันสรุปข้อมูลออกมาจนครบทุกคนครับอาจารย์

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#11

by snasui » Fri Mar 20, 2015 2:24 pm

:D ตามที่ถามเป็นการนำมาแสดงได้ทีละ 2 ค่าเท่านั้น

ไม่ทราบว่าส่วนที่ต้องการให้แสดงในเซลล์ต่อจากนั้น นำค่ามาจากไหนครับ :?:

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#10

by aueijung » Fri Mar 20, 2015 7:59 am

:mrgreen: เซลล์ G6 ถึงเซลล์ G55 ที่ชีท เกรดเฉลี่ย ไม่แสดงข้อมูลเลยครับเลยครับอาจารย์
Attachments
AVG.xlsm
(81.68 KiB) Downloaded 7 times

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#9

by snasui » Fri Mar 20, 2015 1:32 am

:D เซลล์ G4 คีย์สูตรตามด้านล่างครับ

=LOOKUP(9.99999999999999E+307,INDEX('รายงานผลการเรียน-Miterm'!A:N,0,MATCH(B4,'รายงานผลการเรียน-Miterm'!$A$4:$N$4,0)))

Enter

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#8

by aueijung » Thu Mar 19, 2015 9:24 pm

:mrgreen: จะมองอย่างไรให้ เซลล์ G4 เป็นค่าของชีท รายงานผลการเรียน-Miterm เซลล์ F25
โดยจับคู่กับเลขที่เซลล์ B4 และชีทเกรดเฉลี่ย เซลล์ G4 จะเปลี่ยนไปเรื่อยๆ เมื่อเปลี่ยนเลขที่ ที่เซลล์ B4 ครับอาจารย์
Attachments
AVG.xlsm
(76.75 KiB) Downloaded 8 times

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#7

by aueijung » Tue Aug 12, 2014 1:47 pm

:thup: ขอบคุณครับอาจารย์ :D

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#6

by snasui » Tue Aug 12, 2014 1:25 pm

:D ผมเขียนบทความและตอบปัญหาเท่านั้นครับ สำหรับหนังสือคิดว่าให้ท่านอื่น ๆ เขียนไปตามสะดวก ส่วนผู้อ่านและผู้ใช้งาน Excel หากทำตามหนังสือแล้วไม่ได้คำตอบสามารถยกมาถามกันได้ครับ

Re: VBA แสดงรายการผลการเรียนของ 2 คน ในหน้าเดียว

#5

by aueijung » Tue Aug 12, 2014 12:07 pm

:D :thup: :cp: ได้ผลลัพธ์ตามที่ต้องการปรับอีกนิดเดียว อาจารย์สุดยอดมากเก่งมากครับ ว่าแต่อาจารย์ได้เขียนหนังสือออกมาตามท้องตลาดหรือยังครับ ถ้ามีที่อาจารย์เขียนไว้ผมจะไปหาซื้อมาอ่าน แล้วก็อาจจะซื้อเข้าห้องสมุดโรงเรียน ถ้าอาจารย์เขียนหนังสือยังไงผมจะติดตามเรื่อยๆ นะครับอาจารย์ ขอบพระคุณมากครับ

Code: Select all

Sub ReportMiterm_Click()
Dim iStart%, iStop%, i%
    With ActiveSheet
        iStart = .Range("Q18")
        iStop = .Range("Q20")
        For i = iStart To iStop Step 2
            .Range("F4") = i
            .Range("N4") = IIf(iStop >= i + 1, i + 1, "")
                        If Sheets("รายงานผลการเรียน-Miterm").Range("Q22") = "พิมพ์ทันที Then
                                Sheets("รายงานผลการเรียน-Miterm").PrintOut
                        Else
                                Sheets("รายงานผลการเรียน-Miterm").PrintOut Preview:=True
                        End If

        Next i

    End With
End Sub

Top