อ้างอิงตามด้านล่าง
snasui wrote:yodpao.b wrote:code นี้เกี่ยวกับเดือนเหรอครับ
ไม่ใช่ครับ
yodpao.b wrote:ลอง run แล้วไม่มีอะไรเกิดขึ้น
ควรจะเป็นเช่นนั้นครับ
ที่เขียนมาให้นั้นเป็น
ตัวอย่างการปรับเงื่อนไขครับ

ข้างบนก็บอกไว้แล้วครับ ส่วนเงื่อนไขอยู่เซลล์ไหนก็ต้องไปอ้างอิงให้ถูกครับ
ย้ำอีกทีว่าคือตัวอย่าง ซึ่งยังอ้างอิงไม่ตรงกับเซลล์จริง
yodpao.b wrote:อาจารย์ครับรบกวนหน่อยครับผมไม่เข้าใจจริงๆ
เช่น r คืออะไร
offset(0,100)ทำไม่ต้องไป offset นี้
Range("F1000") คืออะไร
r คือตัวแปรหนึ่งครับ และเป็นตัวแปรใน rAll ส่วน rAll คืออะไรดูจากตรงนี้
yodpao.b wrote:
Code: Select all
With Worksheets("ฐานข้อมูลล่วงเวลา")
Set rAll = .Range("B7", .Range("B" & rl).End(xlUp))
End With
จะเห็นได้ว่า rAll คือช่วงข้อมูลในชีท ฐานข้อมูลล่วงเวลา เซลล์เริ่มต้นคือ B7 และจะสิ้นสุดตรงไหนก็ขึ้นอยู่กับค่าที่ได้จาก .Range("B" & rl).End(xlUp) ซึ่งหมายถึงให้ดูที่เซลล์สุดท้ายของคอลัมน์ B วิ่งไปยังเซลล์ที่มีข้อมูลตัวแรก
นับจากด้านล่างขึ้นมา เช่นอาจจะเป็น B20 ความหมายของ .Range("B7", .Range("B" & rl).End(xlUp)) ก็จะได้เป็น B7:B20
และเมื่อเรากำหนดเป็น Set rAll = .Range("B7", .Range("B" & rl).End(xlUp)) ก็แสดงว่า rAll = B7:B20 เช่นนี้เป็นต้น
และจาก Code
ตัว r ก็คือแต่ละค่าใน B7:B20
และจาก
If r = Worksheets("Report").Range("F3") and r.
offset(0,100) = Worksheets("Report").Range("F1000") Then
สมมุติว่า r คือ B7 ก็จะหมายความว่า ถ้า B7 มีค่าเท่ากับ F3 และ
ค่าที่ถัดจาก B7 ไป 100 คอลัมน์มีค่าเท่ากับ F1000 แล้ว...
ซึ่งจะเห็นว่าเป็นการเขียนสองเงื่อนไขเข้าไปเลย ไม่ต้องไปทำคนละครั้ง เพียงแต่ที่เขียนให้นี้ยังไม่ตรงกับเซลล์จริงเพราะต้องการให้เข้าใจ สามารถปรับปรุง Code เองได้
การนำไปใช้ก็ต้องปรับให้ตรงกับเซลล์จริงก่อนครับว่าแต่ละเงื่อนไขคือนำค่าใดไปเทียบกับค่าใด