Page 1 of 1

ใช้สูตร IF แล้วไม่แสดงผลตามต้องการ

Posted: Sat May 26, 2012 11:41 pm
by glooffy
รายละเอียด : ใช้สูตร If แล้วต้องการให้แสดงผลลัพธ์ หลายผลลัพธ์ พร้อมกันครับ ผมได้แนบไฟล์ตัวอย่างที่มีปัญหามาให้ดูด้วยครับ หรือว่า ถ้าผมจะไม่ใช้สูตร IF แล้วนั้น มีวิธีอื่นหรือไม่ครับ ขอบคุณครับ

Re: ใช้สูตร IF แล้วไม่แสดงผลตามต้องการ

Posted: Sat May 26, 2012 11:52 pm
by snasui
:D อ่านแล้วยังไม่เคลียร์ครับ สูตร If ที่ว่านั้นใส่ที่เซลล์ใดครับ กรณีเขียนเป็นชื่อของช่วงเซลล์ย่อมไม่แสดงผลในเซลล์จนกว่าเราจะคีย์ Name นั้นเข้าไปในเซลล์เป้าหมายที่ต้องการให้แสดงผลครับ

Re: ใช้สูตร IF แล้วไม่แสดงผลตามต้องการ

Posted: Sun May 27, 2012 12:12 am
by glooffy
คืออย่างนี้นะครับ :
อยากให้ข้อมูลที่อยู่ใน Sheet Record ตรงช่วงที่ผมทำกรอบสีแดงไว้ครับ โดยที่เวลากดปุ่ม "คีย์เสร็จแล้วกดปุ่มนี้" รายการข้อมูลที่คีย์เข้าไปจะต้องแสดงที่ Sheet Record ตรงกรอบสีแดง ในขณะเดียวกันก็จะต้องไปแสดงข้อมูลที่ Sheet Hold ในกรอบสีเขียวด้วยครับ

Re: ใช้สูตร IF แล้วไม่แสดงผลตามต้องการ

Posted: Sun May 27, 2012 12:31 am
by snasui
:shock: รายการในกรอบสีแดงก็แสดงอยู่ในกรอบสีแดงอยู่แล้ว เมื่อกดปุ่มก็ไม่จำเป็นต้องบันทึกลงที่เดิม แต่หากต้องการจะนำข้อมูลที่ได้จากการเลือกเซลล์ C3 โดยที่ หาก
  1. C3 มีค่าเป็น ลงทะเบียนบัตรยึดจากเครื่อง แล้วให้นำข้อมูลในช่วง B13:F24 เฉพาะที่มีข้อมูลไปวางที่ชีท Hold เริ่มที่เซลล์ C10
  2. C3 มีค่าเป็น คืนบัตรให้ลูกค้าแล้ว แล้วให้นำข้อมูลในช่วง I13:M24 เฉพาะที่มีข้อมูลไปวางที่ชีท GetBack เริ่มที่เซลล์ C10
  3. C3 มีค่าเป็น ทำลายบัตรแล้ว แล้วให้นำข้อมูลในช่วง O13:S24 เฉพาะที่มีข้อมูลไปวางที่ชีท Destroy เริ่มที่เซลล์ C10
จาก Code ที่แนบมาสามารถเขียนใหม่เป็นตามด้านล่างครับ

Code: Select all

Sub SendData()
    Dim rSource As Range
    Dim rTarget As Range
    With Worksheets("Record")
        Select Case .Range("C3").Value
            Case "ลงทะเบียนบัตรยึดจากเครื่อง"
                Set rSource = .Range("B13", .Range("F24").End(xlUp))
                Set rTarget = Worksheets("Hold").Range("C" & Rows.Count) _
                    .End(xlUp).Offset(1, 0)
            Case "คืนบัตรให้ลูกค้าแล้ว"
                Set rSource = .Range("I13", .Range("M24").End(xlUp))
                Set rTarget = Worksheets("GetBack").Range("C" & Rows.Count) _
                    .End(xlUp).Offset(1, 0)
            Case "ทำลายบัตรแล้ว"
                Set rSource = .Range("O13", .Range("S24").End(xlUp))
                Set rTarget = Worksheets("Destroy").Range("C" & Rows.Count) _
                    .End(xlUp).Offset(1, 0)
        End Select
    End With
    If rSource.Row = 12 Then
         MsgBox "Can't found data. Please try again."
         Exit Sub
    End If
    rSource.Copy
    rTarget.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
End Sub
ปกติกรณีใช้ VBA ควรบอกด้วยว่าได้เขียน Code ไว้ที่ Module ใด ชื่อว่า Procedure อะไร จะได้เข้าถึงข้อมูลโดยเร็ว

Re: ใช้สูตร IF แล้วไม่แสดงผลตามต้องการ

Posted: Sun May 27, 2012 12:38 am
by glooffy
ขอบคุณมากครับ และต้องขอโทษด้วยนะครับ ที่ผมลืมแจ้งเรื่อง VBA ไปครับ