ไม่เป็นไรครับ ค่อยๆ ทำความเข้าใจกันไป ถ้าอย่างนั้นผมขออธิบายให้ละเอียดขึ้นอีกหน่อย
เริ่มจากของอาจารย์ก่อน เพราะกระชับและหากทำความเข้าใจที่ฟังก์ชัน Offset ได้แล้วก็จะเอาไปใช้ได้ง่ายครับ ลองศึกษาเกี่ยวกับ offset ที่ลิงค์ด้านล่างนี้
OFFSET
ส่วนที่ของผม อธิบายไล่บรรทัดเลยนะครับ
Dim l As Long

ประกาศตัวแปร l เป็นชนิด Long ซึ่งจะรองรับเลขจำนวนเต็มที่มีค่าระหว่าง -9,223,372,036,854,775,808 ถึง 9,223,372,036,854,775,807 เพราะตอนแรกจะให้ l แทนเลขแถวที่มีโอกาสมากสุดคือเลข 1,048,576 (โปรแกรมรุ่น 2007 ขึ้นไป)
With ActiveSheet

ใช้ with เพื่อจะละคำที่อยู่หลัง with ไว้ คำสั่งจะได้สั้นลงครับ หากไม่ละ อีก 2 บรรทัดถัดลงมาก็จะยาวขึ้น เดี๋ยวจะเขียนบอกหลังจากนี้ การใช้ with ต้องจบด้วย end with
l = ActiveSheet.Range("K" & ActiveSheet.Rows.Count).End(xlToRight).Row + 1

อันนี้คือแบบไม่ละ ActiveSheet

ตรง
.rows.count จะสั่งให้นับจำนวนแถวทั้งหมดในชีทนี้ (ได้ 1048576) จากนั้นจะตั้งต้นที่เซลล์ K1048576 แล้วนึกภาพว่ากดปุ่ม Ctrl + ลูกศรขวา (คือ
.End(xlToRight)) การทำแบบนี้จะทำให้ cursor วิ่งไปทางขวาและจะไปหยุดที่เซลล์แรกที่พบว่ามีอักขระบรรจุอยู่ หรือหากไม่มีเลยก็จะไปหยุดที่เซลล์ขวาสุด

พอเคอเซอร์หยุดแล้วก็สั่งให้ l มีค่าเท่ากับเลขของแถวนั้น +1 (จะได้ 1048577)
ActiveSheet.Range("K" & l).Select

สั่งให้เลือกเซลล์ K1048577 หากรันคำสั่งนี้จริงๆ จะทำให้เกิดการผิดพลาดเพราะเซลล์นี้ไม่มีอยู่จริงครับ (เลยแผ่นงาน)
ส่วนโค้ดใหม่ที่ปรับไปก็คล้ายๆ กันครับ วิธีติดตามการทำงานของคำสั่งที่ผมใช้อยู่คือ รันโค้ดทีละบรรทัด (กด F8) และใช้ immediate window กับ watch window ครับ