Page 1 of 1

การเขียน Code VBA รับค่าจาก Cell

Posted: Wed Feb 05, 2014 1:24 pm
by GTE
สวัสดีครับ อาจารย์

มีเรื่องรบกวนสอบถามครับ คือ ผมต้องการจะสร้างเงื่อนไขเพื่อรับค่าจาก Cell ดังตารางในรูปครับ สมมติผมมีค่าอยู่ 1 ค่า (ChainageFind(i)) ซึ่งมีค่าอยู่ระหว่างค่าใน Column B และ C และผมต้องการเก็บค่าจาก Column D และ E Crossfall1(i) และ Crossfall2(i) สมมติว่าผมมีค่าเท่ากับ 295 มีค่าอยู่ระหว่าง 291 - 365 ซึ่ง จะเก็บค่า -1.5 กับ 3.5 จะต้องเขียน Code อย่างไรครับ ขอคำแนะนำด้วยครับ

Code: Select all

    If ChainageFind(i) >= ChainageStart(i) Or ChainageFind(i) < ChainageEnd(i) Then
        Crossfall1(i) = Worksheets("Crossfall data (LT)").Cells(i + 4, 4)
        Crossfall2(i) = Worksheets("Crossfall data (LT)").Cells(i + 4, 5)
    End If

Re: การเขียน Code VBA รับค่าจาก Cell

Posted: Wed Feb 05, 2014 2:25 pm
by snasui
:D แนบไฟล์ตัวอย่างพร้อมตัวอย่างคำตอบที่ต้องการมาด้วยครับ

Re: การเขียน Code VBA รับค่าจาก Cell

Posted: Wed Feb 05, 2014 3:38 pm
by GTE
รบกวนด้วยครับอาจารย์ ตามไฟล์แนบครับ เป็นการเทียบบัญญัติยางค์ครับ

Re: การเขียน Code VBA รับค่าจาก Cell

Posted: Wed Feb 05, 2014 5:02 pm
by snasui
:D จากตัวอย่างคำตอบที่ต้องการ เซลล์ D17 มีค่าเป็น 0 ไม่ทราบว่ามาได้อย่างไรครับ

จากที่อธิบายมาด้านบน แสดงว่าต้องการจะเก็บค่า Crosfall ที่เป็น Start และ End ถ้าอ่านตามโจทย์ คำตอบที่ D17 ควรเป็น -1.5 (Start และ End มีค่าเท่ากัน)

Re: การเขียน Code VBA รับค่าจาก Cell

Posted: Wed Feb 05, 2014 5:26 pm
by GTE
ต้องขอโทษอาจารย์ด้วยครับ คำตอบที่ D17 จริงๆ แล้วเท่ากับ -0.892 ซึ่งมาจาก -1.5+((300-291)/(365-291))*(3.5-(-1.5)) ครับ

Re: การเขียน Code VBA รับค่าจาก Cell

Posted: Wed Feb 05, 2014 8:14 pm
by snasui
:D การทำเช่นนั้นสามารถใช้สูตรมาช่วยได้ครับ

ที่ D17 คีย์สูตร

=VLOOKUP(B17,$B$5:$E$13,3)+((B17-VLOOKUP(B17,$B$5:$E$13,1))/(VLOOKUP(B17,$B$5:$E$13,2)-VLOOKUP(B17,$B$5:$E$13,1)))*(VLOOKUP(B17,$B$5:$E$13,4)-VLOOKUP(B17,$B$5:$E$13,3))

Enter > Copy ลงด้านล่าง

Re: การเขียน Code VBA รับค่าจาก Cell

Posted: Wed Feb 05, 2014 8:32 pm
by GTE
สูตรของอาจารย์สามารถใช้ได้เลยครับ ขอบคุณอาจารย์มากครับ