เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Page 1 of 2 12 LastLast
Results 1 to 10 of 12

Thread: ผมมีคำถามเกี่ยวกับการใช้ if กับ hlookup ครับ ลองเข้ามาดูคำถามข้างในครับ

  1. #1
    civiccoupe
    Guest

    ผมมีคำถามเกี่ยวกับการใช้ if กับ hlookup ครับ ลองเข้ามาดูคำถามข้างในครับ

    เมื่อเลือก type และ separate และวันที่แล้ว เมื่อกด submit ไปข้อมูลที่เลือกค่าจะไปลงตามวันที่เลือก เช่น ผมเลือก type=car separate=toyota และเลือกวันที่ คือ 2008-01-01(สมมติถ้าเลือกอย่างนี้มีค่าเป็น 10) ค่าที่เลือกจะต้องไปลงในชีต 2 นะครับและจะต้องลงในคอลัมภ์ที่มีวันที่ 2008-01-01 ต้องตรงกันนะครับ

    **ไม่ทราบว่าผมจะเขียน if กับ hlookup ใช่หรือไม่ครับ แล้วสามารถทำได้อย่างไร ลองยกตัวอย่างให้ดูหน่อยครับ ขอบคุณครับ

  2. #2
    อรวีร์
    Guest

    Smile

    ไม่เข้าใจคำถามค่ะ
    คำว่า (สมมติถ้าเลือกอย่างนี้มีค่าเป็น 10) หมายความว่าอย่างไร ดูจากไหนว่ามีค่าเป็น 10 คะ
    คำว่า ค่าที่เลือกจะต้องไปลงในชีต 2 ค่าที่เลือกคืออะไร และลงในชีต 2 แบบไหนคะ
    น่าจะแสดงตัวอย่างให้ดูด้วยว่า CAR กับ TOYOTA มีผลอย่างไรกับชีต 2
    คุณน่าเขียนอธิบายใหม่ แล้วลองให้เพื่อน(ที่ไม่รู้เกี่ยวกับเรื่องนี้)อ่านดูว่าเข้าใจหรือไม่

    และที่ Code . . .
    y = ".xls"
    If y = False And Not TypeName(y) = "String" Then Exit Sub
    Application.ScreenUpdating = False
    BadDate:
    MsgBox "Could not set date, make sure a cell is selected and the sheet is not protected", vbExclamation, "Date Selector"
    Exit Sub
    มีไว้ทำไมคะ เพราะไม่มีโอกาสที่ Exit Sub จะทำงานเลย(เงื่อนไขหลัง If ไม่เป็นจริงเสมอ) ทำให้ MsgBox ทำงานเสมอ

    และที่ Code
    aaaa = Format(Sheet1.DateTx.Value, "mm/dd/yyyy")
    มีไว้ทำไมคะ ไม่เห็นนำค่า aaaa ไปใช้ที่ไหนเลย
    คุณควรตัด Code ส่วนที่ไม่เกี่ยวข้องกับคำถามออกให้หมด ไม่เช่นนั้นผู้ตอบต้องมาอ่านและพยายามทำความเข้าใจ ทั้งๆที่ Code นั้นไม่เกี่ยวข้องกับเรื่องที่ถาม

  3. #3
    civiccoupe
    Guest
    ขอโทษทีครับผมอธิบายงงจริงๆ เดี๋ยวผมอธิบายใหม่นะครับ
    เมื่อเลือก type คือ car แล้วเลือก Separate คือ Toyota แล้วเลือกวันที่คือ 2008-01-01(ปี-เดือน-วัน) เมื่อเลือกเสร็จแล้วให้กด submit ในปุ่ม submit จะมี code SQL ใน sql จะไปเลือก ในตาราง type ที่เป็น car Seperate ที่เป็น Toyota และ เลือกวันที่เลือกคือ 2008-01-01 (ในฐานข้อมูลจะมีข้อมูลดังที่ให้ตัวอย่างไว้ในไฟล์แนบอันใหม่นะครับ ) เสร็จแล้วมันจะดึงค่า value คือ 10 ออกมา ถึงตรงนี้นี่คือทำเสร็จแล้วครับแต่ผมไม่ได้เอา code ที่ query มาให้ดู
    พอถึงตรงนี้ เมื่อกด submit เสร็จแล้ว value ของวันที่ 2008-01-01 นั้นคือ 10 ผมต้องการให้ค่า 10 ไปลงที่ sheet2 และต้องลงค่าใน column ของวันที่ 2008-01-01 (ตามที่อยู่ในไฟล์แนบนะครับ)

    -ผมอยากถามว่าเราจะต้องเขียน code อย่างไรเพื่อให้ได้ตามที่ผมต้องการครับ ไม่ทราบว่าใช่ใช้ Hlookup หรือไม่ครับ แล้วทำอย่างไรครับ ลองยกตัวอย่างก็ได้ครับ

  4. #4
    สมเกียรติ
    Guest
    ควรอธิบายถึงกรณีอื่นๆด้วย เช่น ถ้าคลิกเลือกอย่างอื่นที่ไม่ใช่ car/toyota แล้วจะให้ข้อมูลไปเก็บไว้ที่ไหน ถ้าเอาไปเก็บไว้ในชีท 2 ตามวันก็จะปนกับข้อมูลของกรณีเดิมอีก

    แล้วตารางในชีต 2 มีหัวตารางเรียงวันที่ไว้ก่อนแล้ว หรือให้ VBA เพิ่มต่อให้เอง และมีกรณีที่วันไม่เรียงด้วยไหม

    ตัวอย่างที่ยกมานี้ ถ้าจะใช้สูตรแทน VBA ก็ทำได้ และไม่ยากเลยครับ ทำไมคุณต้องใช้ VBA ด้วย

    แทนที่จะถามรหัสกัน น่าจะอธิบายลักษณะของงานนี้มาให้เข้าใจกันก่อนว่า ใช้ในงานอะไร ต้องการอะไร มีวงจรของการบันทึกค่าและเรียกใช้ข้อมูลอย่างไร

  5. #5
    civiccoupe
    Guest
    อธิบายการทำงานของโปรแกรม
    เมื่อ user เลือก type separate และ date แล้วกด submit แล้ว code ในsubmit จะ ไปดึงข้อมูลใน ฐานข้อมูลตามที่ user ได้เลือก และ จะมี code ดึง value มาทำดังนี้
    ถ้าเลือก car/honda/2008-01-02 value= 20 ก็ให้ไปเก็บข้อมูลที่ sheet2 columnของวันที่ 2008-01-02
    ถ้าเลือก food/rice/2008-01-03 value= 30 ก็ให้ไปเก็บข้อมูลที่ sheet2 columnของวันที่ 2008-01-03
    ถ้าเลือก food/bread/2008-01-04 value= 40 ก็ให้ไปเก็บข้อมูลที่ sheet2 columnของวันที่ 2008-01-04
    ถ้าเลือก food/sugar/2008-01-05 value= 50 ก็ให้ไปเก็บข้อมูลที่ sheet2 columnของวันที่ 2008-01-05
    ถ้าเลือก food/flavour/2008-01-06 value= 60 ก็ให้ไปเก็บข้อมูลที่ sheet2 columnของวันที่ 2008-01-06
    ตามที่ได้ยกตัวอย่างใน sheet2 ของไฟล์ที่แนบ นะครับ
    - ในชีต 2 มีตารางหัวเรียงวันที่ไว้ก่อน แค่ 2 เดือนครับ ที่เหลือต้องใช้ vba
    - ลักษณะงานนะครับ คือ ค่า value ที่ต้องการเอามาลงนะครับ จะต้องลงทุกวัน วันละ 1 ครั้ง เช่น ถ้าวันนี้วันที่ 2008-01-01 ก็ให้ค่า 10 ลงของวันที่ 2008-01-01
    และ พรุ่งนี้ วันที่ 2008-01-02 ก็ให้ค่า 20 ลงของวันที่ 2008-01-02 คือลงวันต่อวันนะครับ

  6. #6
    civiccoupe
    Guest
    เพิ่มเติมอีกนิดนึงครับ เมื่อ กด submit แล้วให้ค่าไปใส่ในช่องของวันที่เดี่ยวกัน ในชีต2 เลยครับ
    ไม่ทราบว่าจำเป็นต้องใช้ vba หรือไม่ครับ

  7. #7
    civiccoupe
    Guest
    ช่วยตอบด้วยนะครับ จนปัญญาจริงๆ

  8. #8
    อรวีร์
    Guest

    Smile

    หลังจาก Query ได้ค่าจากฐานข้อมูลแล้ว ใช้ Code นี้ค่ะ
    Code:
    Dim FoundCell As Range, TemStr( ) As String, FindDate As Date
    TemStr = Split(Sheet1.DateTx.Value, "/")
    FindDate = DateSerial(TemStr(0), TemStr(1), TemStr(2))
    Set FoundCell = Sheets(2).Rows("12:12").Find(FindDate)
    If FoundCell Is Nothing Then
        Set FoundCell = Sheets(2).Cells(12, 255).End(xlToLeft).Offset(0, 1)
        FoundCell.Value = FindDate
    End If
    FoundCell.Offset(1, 0).Value = 10 ' ใช้ค่าจากฐานข้อมูลแทน
    ถ้าวันที่ที่ระบุหาไม่พบในบรรทัด 12 โปรแกรมจะเพิ่มให้ค่ะ

  9. #9
    civiccoupe
    Guest
    ขอบคุณครับ คุณอรวีร์
    แต่มัน error ที่บรรทัด FindDate = DateSerial(TemStr(0), TemStr(1), TemStr(2))
    เดี๋ยวผมลองแก้ก่อนนะครับ

  10. #10
    civiccoupe
    Guest
    ถ้าเป็นไปได้ช่วยรบกวนอธิบาย code ให้หน่อยนะครับ ผมจะได้ศึกษาเองได้มากขึ้น

Similar Threads

  1. Hlookup คืนค่าผิดครับ
    By pititas in forum Excel Expert Forum Library 2012 - 2007
    Replies: 3
    Last Post: 17 Aug 2008, 11:45

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •