Page 2 of 3

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Fri Oct 13, 2017 5:37 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Dim wb As Workbook, foundBook As Boolean
Dim Classroom As Integer, col As String
CurrDir = Application.ActiveWorkbook.Path
Classroom = [z4].Value
For Each wb In Workbooks
    If wb.Name <> ThisWorkbook.Name Then
        foundBook = False
        Select Case wb.Name
            Case "01สังคม_ป1.xlsm"
                foundBook = True
                col = "J"
            Case "02สุขศึกษา_ป1.xlsm"
                foundBook = True
                col = "L"
            Case "03ศิลปะ_ป1.xlsm"
                foundBook = True
                col = "M"
        End Select
        If foundBook Then
            If Classroom = "1" Then
                Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง1เทอม1"
            ElseIf Classroom = "2" Then
                Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง2เทอม1"
            ElseIf Classroom = "3" Then
                Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง3เทอม1"
            ElseIf Classroom = "4" Then
               Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง4เทอม1"
            ElseIf Classroom = "5" Then
                Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง5เทอม1"
            End If
            Range(col & 4 & ":" & col & 53).FillDown
        End If
    End If
Next wb

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Fri Oct 13, 2017 6:22 pm
by yangkodza

Code: Select all

Sub ดึงok()
Dim wb As Workbook, foundBook As Boolean
Dim Classroom As Integer, col As String
CurrDir = Application.ActiveWorkbook.Path
Classroom = [z4].Value
For Each wb In Workbooks
    If wb.Name <> ThisWorkbook.Name Then
        foundBook = False
        Select Case wb.Name
            Case "01สังคม_ป1.xlsm"
                foundBook = True
                col = "J"
            Case "02สุขศึกษา_ป1.xlsm"
                foundBook = True
                col = "L"
            Case "03ศิลปะ_ป1.xlsm"
                foundBook = True
                col = "M"
        End Select
        If foundBook Then
            If Classroom = "1" Then
                Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง1เทอม1"
            ElseIf Classroom = "2" Then
                Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง2เทอม1"
            ElseIf Classroom = "3" Then
                Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง3เทอม1"
            ElseIf Classroom = "4" Then
               Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง4เทอม1"
            ElseIf Classroom = "5" Then
                Range(col & 4).Formula = "=[" & wb.Name & "]" & "สรุป1" & "!ห้อง5เทอม1"
            End If
            Range(col & 4 & ":" & col & 53).FillDown
        End If
    End If
Next wb
End Sub

อาจารย์ครับ
ผมลองปรับ Code แล้ว
มาแต่คะแนนสังคมครับ อีก 2 วิชาไม่ยอมมาด้วย
ลองกด F8 รันทีละสเตปวนไปเรื่อยๆ ก็ไม่ยอมมา

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Fri Oct 13, 2017 6:33 pm
by snasui
:D ปรับตรงไหน ปรับเป็นอย่างไร แนบไฟล์ที่ปรับเองแล้วพร้อมทั้่งแจ้งมาด้วยว่าถ้าถูกต้องคอลัมน์ใดต้องเป็นค่าเท่าใด จะได้ตอบต่อไปจากนั้นครับ

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Fri Oct 13, 2017 6:37 pm
by yangkodza
ผมเข้าใจแล้วครับ
ต้องทำการเปิดไฟล์ต้นทางทั้ง 3 วิชาก่อน
VBA ถึงจะรันได้

แต่ถ้าเราต้องการให้เป็นระบบไม่ต้องเปิดไฟล์
แต่ใช้วิธีการให้อัปเดทค่ากรณีที่เราเปลี่ยนห้อง
ต้องปรับอย่างไรครับ

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Fri Oct 13, 2017 6:40 pm
by snasui
:D ลองศึกษาการกำหนดตัวแปรและปรับปรุง Code มาเอง ติดตรงไหนค่อยถามกันต่อครับ

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Fri Oct 13, 2017 7:55 pm
by yangkodza

Code: Select all

Sub เปลี่ยนห้อง()
CurrDir = Application.ActiveWorkbook.Path
Classroom = InputBox("ระบุห้องที่สอน เช่น 6-1")
    Range("B3").Select
     ActiveCell.Formula = "='" & CurrDir & "\[รายชื่อประถม.xlsx]ป." & Classroom & "'!B3"
    Selection.AutoFill Destination:=Range("b3:E3"), Type:=xlFillDefault
    Range("b3:E3").Select
    Selection.AutoFill Destination:=Range("b3:E52")
    Range("b3").Select
    Call Module4.คะแนน
End Sub

Code: Select all

Sub คะแนน()
CurrDir = Application.ActiveWorkbook.Path
    Sheets("รวม 12 วิชาเทอม1").Select
Classroom = [z4].Value
    Range("J4").Select
    ActiveCell.FormulaR1C1 = "='01สังคม_ป1.xlsm'!ห้อง" & Classroom & "เทอม1"
    ActiveCell.Formula = "='" & CurrDir & "\01สังคม_ป1.xlsm'!ห้อง" & Classroom & "เทอม1"
    Selection.AutoFill Destination:=Range("สังคม")
    Range("สังคม").FillDown
    Range("L4").Select
    ActiveCell.Formula = "='" & CurrDir & "\02สุขศึกษา_ป1.xlsm'!ห้อง" & Classroom & "เทอม1"
    Selection.AutoFill Destination:=Range("สุขศึกษา")
    Range("สุขศึกษา").FillDown
    Range("M4").Select
    ActiveCell.Formula = "='" & CurrDir & "\03ศิลปะ_ป1.xlsm'!ห้อง" & Classroom & "เทอม1"
    Selection.AutoFill Destination:=Range("ศิลปะ")
    Range("ศิลปะ").FillDown
End Sub


เมื่อเปิดไฟล์ ดึงคะแนน
เราสามารถระบุห้อง ป.1 ได้เลย
เช่น 1-1 หรือ 1-5 เป็นต้น
คะแนนทั้ง 3 วิชา จะถูกดึงขึ้นมาอัตโนมัติ
โดยไม่จำเป็นต้องเปิดไฟล์ต้นทางก่อน

ปัญหาคือ ถ้าไม่พบไฟล์ต้นทาง อยากให้ข้ามไปหาไฟล์ต่อไปครับ
คะแนน.rar

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Fri Oct 13, 2017 9:43 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Dim FilePath As String, fileName As String
Dim Classroom As String, CurrDir As String

CurrDir = Application.ActiveWorkbook.Path
Sheets("รวม 12 วิชาเทอม1").Select
Classroom = [z4].Value
fileName = Dir(CurrDir & "\*.xls")
Do Until fileName = ""
    Select Case fileName
        Case "01สังคม_ป1.xlsm"
            Range("J4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "02สุขศึกษา_ป1.xlsm"
            Range("L4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "03ศิลปะ_ป1.xlsm"
            Range("M4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
    End Select
    fileName = Dir()
Loop

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Fri Oct 13, 2017 9:56 pm
by yangkodza
snasui wrote::D ตัวอย่าง Code ครับ

Code: Select all

Dim FilePath As String, fileName As String
Dim Classroom As String, CurrDir As String

CurrDir = Application.ActiveWorkbook.Path
Sheets("รวม 12 วิชาเทอม1").Select
Classroom = [z4].Value
fileName = Dir(CurrDir & "\*.xls")
Do Until fileName = ""
    Select Case fileName
        Case "01สังคม_ป1.xlsm"
            Range("J4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "02สุขศึกษา_ป1.xlsm"
            Range("L4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "03ศิลปะ_ป1.xlsm"
            Range("M4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
    End Select
    fileName = Dir()
Loop
ขอบคุณมากครับอาจารย์
เป็นไปตามที่ต้องการเลยครับ
ที่เหลือก็ดึงรายวิชาอื่นเข้ามาเพิ่มเติม
น้ำตาจะไหล :rz: :rz:

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sat Oct 14, 2017 10:39 am
by yangkodza
เพิ่มเติมครับ
ต้องการดึงคะแนนไฟล์จีน
แต่ข้อมูลในไฟล์เป็นแผ่นงานแต่ละห้อง
เช่น ป.1-1 ป.1-2 เป็นต้น
ไม่สามารถดึงคะแนนเข้ามาได้ครับ
ส่วนไฟล์คะแนนอื่นๆ ดึงได้ตามปกติครับ

Code: Select all

Sub เปลี่ยนห้อง()
CurrDir = Application.ActiveWorkbook.Path
Classroom = InputBox("ระบุห้องที่สอน เช่น 6-1")
    Range("B3").Select
     ActiveCell.Formula = "='" & CurrDir & "\[รายชื่อประถม.xlsx]ป." & Classroom & "'!B3"
    Selection.AutoFill Destination:=Range("b3:E3"), Type:=xlFillDefault
    Range("b3:E3").Select
    Selection.AutoFill Destination:=Range("รายชื่อ")
    Range("b3").Select
    Call Module1.คะแนนเทอม1
Sheets("หน้าแรก").Select
End Sub
Sub คะแนนเทอม1()
Dim FilePath As String, fileName As String
Dim Classroom As String, CurrDir As String
CurrDir = Application.ActiveWorkbook.Path
Sheets("รวม 12 วิชาเทอม1").Select
'*******ตั้งต่า
    Range("AG4").Select
    ActiveCell.FormulaR1C1 = "=MID(RC[-27],1,1)" 'ระดับชั้น
    Range("AG5").Select
    ActiveCell.FormulaR1C1 = "=MID(R[-1]C[-27],3,1)" 'ห้อง
    Range("AG6").Select
'*******
    Range("G4:R53").Select
    Selection.ClearContents 'ลบคะแนนทิ้งก่อน
Classroom1 = [AG4].Value  'ระดับชั้น
Classroom = [AG5].Value  'ห้อง
Classroom3 = [AG6].Value  ' จีน
fileName = Dir(CurrDir & "\*.xlsm")
Do Until fileName = ""
    Select Case fileName
        Case "01สังคม_ป" & Classroom1 & ".xlsm"
            Range("J4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "02สุขศึกษา_ป" & Classroom1 & ".xlsm"
            Range("L4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "03ศิลปะ_ป" & Classroom1 & ".xlsm"
            Range("M4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "04กอท_ป" & Classroom1 & ".xlsm"
            Range("N4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "05English_P" & Classroom1 & ".xlsm"
            Range("O4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "06คอมพิวเตอร์_ป" & Classroom1 & ".xlsm"
            Range("P4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "07English Conversation_p" & Classroom1 & ".xlsm"
            Range("Q4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
       Case "จีนประถม.xlsm"
            Range("R4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ป." & Classroom3 & "'!G4:G53)"
    End Select
    fileName = Dir()
Loop
    Range("R4").Select
End Sub
ผมได้เพิ่ม

Code: Select all

       Case "จีนประถม.xlsm"
            Range("R4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ป." & Classroom3 & "'!G4:G53)"
เข้าไปใน VBA แต่ไม่สามารถดึงคะแนนได้
ต้องปรับ Code แบบไหนครับ :flw:
จีน.rar

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sat Oct 14, 2017 3:32 pm
by snasui
:D ไฟล์ที่แนบมาไม่มีไฟล์ที่ชื่อ "จีนประถม.xlsm" ช่วยแนบมาใหม่อีกรอบจะได้ช่วยทดสอบให้ได้ครับ

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sat Oct 14, 2017 4:05 pm
by yangkodza
snasui wrote::D ไฟล์ที่แนบมาไม่มีไฟล์ที่ชื่อ "จีนประถม.xlsm" ช่วยแนบมาใหม่อีกรอบจะได้ช่วยทดสอบให้ได้ครับ
ขอโทษด้วยครับ แนบไฟล์งานไม่ครบ :D
จีน.rar

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sat Oct 14, 2017 4:41 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

'Other code
Case "จีนประถม.xlsm"
    Range("R4").Resize(50, 1).Formula = "='" & CurrDir & "\[" & fileName & "]ป." & Classroom3 & "'!G4"
'Other code

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sat Oct 14, 2017 4:53 pm
by yangkodza
snasui wrote::D ตัวอย่าง Code ครับ

Code: Select all

'Other code
Case "จีนประถม.xlsm"
    Range("R4").Resize(50, 1).Formula = "='" & CurrDir & "\[" & fileName & "]ป." & Classroom3 & "'!G4"
'Other code
ขอบคุณมากครับ สมบูรณ์แบบ
แบบนี้สามารถประยุกต์ใช้งานได้ทั้งหมดแล้วครับ :D

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sat Oct 14, 2017 6:51 pm
by yangkodza
ขอเพิ่มอีกกรณีครับ
ถ้าข้อมูลที่ต้องการดึงอยู่ในช่วงของขอบเขตที่กำหนด
เช่น E7:X7 เราต้องการเช็คก่อนว่าข้อมูลสุดท้ายอยู่ที่เซลใด
จากตัวอย่าง ข้อมูลอยู่ที่ N7 เราก็ดึง ข้อมูลตั้งแต่ N8:N57

คือส่วนนี้เป็นคะแนนของว่ายน้ำ 10 คะแนน แต่อยู่รวมกับวิชาสุขศึกษา
แต่ข้อแม้ของการใส่คะแนนว่ายน้ำคือ ใส่เป็นช่องหลังสุดของทุกระดับชั้นครับ

Code: Select all

Sub คะแนนเทอม1()
Dim FilePath As String, fileName As String
Dim Classroom As String, CurrDir As String
CurrDir = Application.ActiveWorkbook.Path
Sheets("รวม 12 วิชาเทอม1").Select
'*******ตั้งต่า
    Range("AG4").Select
    ActiveCell.FormulaR1C1 = "=MID(RC[-27],1,1)" 'ระดับชั้น
    Range("AG5").Select
    ActiveCell.FormulaR1C1 = "=MID(R[-1]C[-27],3,1)" 'ห้อง
    Range("AG6").Select
'*******
    Range("G4:R53").Select
    Selection.ClearContents 'ลบคะแนนทิ้งก่อน
Classroom1 = [AG4].Value  'ระดับชั้น
Classroom = [AG5].Value  'ห้อง
Classroom3 = [AG6].Value  ' จีน
fileName = Dir(CurrDir & "\*.xlsm")
Do Until fileName = ""
    Select Case fileName
        Case "01สังคม_ป" & Classroom1 & ".xlsm"
            Range("J4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "02สุขศึกษา_ป" & Classroom1 & ".xlsm"
            Range("L4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "03ศิลปะ_ป" & Classroom1 & ".xlsm"
            Range("M4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "04กอท_ป" & Classroom1 & ".xlsm"
            Range("N4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "05English_P" & Classroom1 & ".xlsm"
            Range("O4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "06คอมพิวเตอร์_ป" & Classroom1 & ".xlsm"
            Range("P4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "07English Conversation_p" & Classroom1 & ".xlsm"
            Range("Q4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!ห้อง" & Classroom & "เทอม1"
        Case "จีนประถม.xlsm"
            Range("R4").Resize(50, 1).Formula = "='" & CurrDir & "\[" & fileName & "]ป." & Classroom3 & "'!G4"
        Case "CNNประถม.xlsm"
            Range("Q4").Resize(50, 1).Formula = "='" & CurrDir & "\[" & fileName & "]ป." & Classroom3 & "'!C2"
        Case "02สุขศึกษา_ป" & Classroom1 & ".xlsm"
            Range("P4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!C" & Classroom & "T1'!N8"
    End Select
    fileName = Dir()
Loop
    Range("P4").Select
End Sub

Code: Select all

        Case "02สุขศึกษา_ป" & Classroom1 & ".xlsm"
            Range("P4").Resize(50, 1).Formula = "='" & CurrDir & "\" & fileName & "'!C" & Classroom & "T1'!N8"
ต้องปรับสูตรแบบใดครับ

ว่ายน้ำ.rar

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sat Oct 14, 2017 7:08 pm
by snasui
:D ปกติเราจะสร้างตัวแปรมารับค่าคอลัมน์สุดท้ายเพื่อสะดวกในการนำไปใช้ต่อ ยกตัวอย่างการเช็คบรรทัดที่ 7 ว่าข้อมูลสุดท้ายอยู่ที่เซลล์ใด สามารถเขียนเป็นด้านล่างครับ

Code: Select all

dim lstCol as string
lstCol = cells(7,columns.count).end(xltoleft).address(0,0)
range(lstCol).offset(1,0).resize(50,1).formula =...
ตรง ... คือสูตรที่จะใช้ ลองปรับปรุงมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sun Oct 15, 2017 9:32 am
by yangkodza
snasui wrote::D ปกติเราจะสร้างตัวแปรมารับค่าคอลัมน์สุดท้ายเพื่อสะดวกในการนำไปใช้ต่อ ยกตัวอย่างการเช็คบรรทัดที่ 7 ว่าข้อมูลสุดท้ายอยู่ที่เซลล์ใด สามารถเขียนเป็นด้านล่างครับ

Code: Select all

dim lstCol as string
lstCol = cells(7,columns.count).end(xltoleft).address(0,0)
range(lstCol).offset(1,0).resize(50,1).formula =...
ตรง ... คือสูตรที่จะใช้ ลองปรับปรุงมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ

Code: Select all

Sub ว่ายน้ำ()
Dim lstCol As String
CurrDir = Application.ActiveWorkbook.Path
Classroom1 = [AG4].Value  'ระดับชั้น
Classroom = [AG5].Value  'ห้อง
Classroom3 = [AG6].Value  ' จีน
fileName = Dir(CurrDir & "\*.xlsm")
Do Until fileName = ""
    Select Case fileName
        Case "02สุขศึกษา_ป" & Classroom1 & ".xlsm"
lstCol = Cells(7, Columns.Count).End(xlToLeft).Address(0, 0)
Range(lstCol).Offset(1, 0).Resize(50, 1).Formula = "='" & CurrDir & "\[" & fileName & "]!c1t1'!P4"
    End Select
    fileName = Dir()
Loop
    Range("P4").Select
End Sub
ไปไม่เป็นแล้วครับ ยังติด Error :oops:
ว่ายน้ำ.rar

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sun Oct 15, 2017 10:03 am
by snasui
:D ตัวอย่างการปรับ Code และคงจะมีปัญหาในเรื่องการหาคอลัมน์สุดท้ายที่จะใช้งาน

Code: Select all

'Other code
Range(lstCol).Offset(1, 0).Resize(50, 1).Formula = "='" & CurrDir & "\[" & fileName & "]C2T1'!N8"
'Other code
ไฟล์ "ดึงคะแนนตัวเทพ.xlsm" ที่แนบมาต้องการจะหาคอลัมน์สุดท้ายจากบรรท้ดใดและเหตุใดจึงไปหาคอลัมน์สุดท้ายจากบรรท้ัดนั้น อธิบายมาอย่างละเอียดครับ

บรรทัดเริ่มของไฟล์นี้คือบรรทัดที 4 จึงไม่ควรไปหาคอลัมน์สุดท้ายที่มีข้อมูลของบรรทัดที่ 7 นอกจากนี้ Code สำหรับการหาคอลัมน์สุดท้ายที่ผมตอบไปนั้น จะเป็นการไปยังคอลัมน์สุดท้ายของ Worksheet ก่อน แล้วค่อยวิ่งกลับมายังเซลล์แรกที่มีข้อมูลในบรรทัดนั้น หากในบรรรทัดนั้น ๆ มีค่าใด ๆ อยู่ก่อนพื้นที่เป้าหมาย อาจจะได้คำตอบที่ไม่ถูกต้อง จำเป็นต้องปรับให้ตรงกับที่จะใช้งานจริง เช่นปรับเป็น cells(7,"S").end(xltoleft) เป็นต้น

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

ีอีกปัญหาคือเครื่องหมาย Single Quote (') สังเกตว่าผมใช้อย่างไร ให้ใช้ตามนั้นเช่นกัน สิ่งเหล่านี้จะต้องทราบโดยละเอียดหากต้องการจะใช้สูตรการ Link ข้ามไฟล วิธีการสังเกตง่าย ๆ คือให้ดู Link ที่ถูกต้องว่าประกอบด้วยอักขระใด อยู่ตำแหน่งใด ในการเขียน Code ก็จะต้องคำนึงถึงอักขระนั้น ๆ อย่างเคร่งครัดครับ

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sun Oct 15, 2017 10:44 am
by yangkodza
ไฟล์ "02สุขศึกษา_ป1.xlsm" ต้องการจะหาคอลัมน์สุดท้ายจากบรรท้ดที่ 8
แต่จริงๆแล้ว ข้อมูลไม่ได้อยู่ท้ายสุด จากไฟล์ดังกล่าว ข้อมูลจะอยู่ที่คอลัมน์ N
สาเหตุที่ต้องการหาคือคะแนนสุดท้ายนี้เป็นคะแนนของว่ายน้ำซึ่งครูผู้สอนจะใส่ไว้ในวิชาสุขศึกษาครับ
และใส่คะแนนเป็นช่องสุดท้าย
จากนั้นต้องการดึงคะแนนจาก คอลัมน์ สุดท้าย ในที่นี้คือ คอลัมน์ N
เอาไปใส่ใน ไฟล์ "ดึงคะแนนตัวเทพ.xlsm" ในช่อง P4 ครับ

ส่วนเรื่องการ Link ข้ามไฟล ผมจะศึกษาตามที่อาจาร์ยแนะนำครับผม

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sun Oct 15, 2017 11:06 am
by snasui
:D Code ที่ตอบไปไม่ได้หาคอลัมน์สุดท้ายของไฟล์ต้นทางแต่เป็นการหาคอลัมน์สุดท้ายของไฟล์ปลายทาง

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

Re: รบกวนช่วยตรวจสูตรครับ

Posted: Sun Oct 15, 2017 11:57 am
by yangkodza
snasui wrote::D Code ที่ตอบไปไม่ได้หาคอลัมน์สุดท้ายของไฟล์ต้นทางแต่เป็นการหาคอลัมน์สุดท้ายของไฟล์ปลายทาง

หากจะหาคอลัมน์สุดท้ายของไฟล์ต้นทาง จำเป็นต้องเขียนมาเองใหม่ ติดตรงไหนค่อยมาถามกันต่อ งานแบบนี้ควรเปิดไฟล์ต้นทางด้วย Code เพื่อที่จะมาทำงานเสียก่อน ทำงานเสร็จแล้วก็ปิดไปด้วย Code อีกเช่นกัน ไม่เช่นนั้นจะยุ่งยากกับการเขียนสูตรเพื่อหาค่าเซลล์สุดท้ายในไฟล์ต้นทาง ซึ่งจะต้องมีความสามารถเขียนสูตรในระดับประยุกต์ได้เป็นอย่างดีจึงจะทำเช่นนั้นได้ครับ
ตอนนี้กำลังพยายามหาทางเขียนให้ อยู่ในไฟล "02สุขศึกษา_ป1.xlsm" ก่อนครับ เดี๋ยวเรื่อง Link ค่อยประยุกต์อีกที

รบกวนอาจาร์ยอธิบาย

Code: Select all

cells(8,"S").end(xltoleft)
"S" หมายถึงอะไรครับ