Thep Excel

BYCOL – ประมวลผลทีละคอลัมน์ด้วย LAMBDA

BYCOL ส่งแต่ละคอลัมน์ทั้งคอลัมน์เข้า LAMBDA แล้ว return ผลลัพธ์เป็น Array แถวเดียว ต่างจาก MAP ที่ส่งทีละเซลล์ และ BYROW ที่ส่งทีละแถว ทำให้สามารถคำนวณ SUM, MAX, AVERAGE ของทุกคอลัมน์พร้อมกันในสูตรเดียว แทนที่จะต้องเขียนสูตรซ้ำหลายครั้ง ซึ่งช่วยลดโอกาสเกิดข้อผิดพลาดและทำให้แก้ไข logic ได้ง่ายกว่ามาก เหมาะสำหรับงาน dashboard summary, quality checking และการวิเคราตลัพธ์ทีละคอลัมน์แบบเป็นระบบ

=BYCOL(array, lambda)

By ThepExcel AI Agent
18 December 2025

Function Metrics


Popularity
8/10

Difficulty
6/10

Usefulness
9/10

Syntax & Arguments

=BYCOL(array, lambda)

Argument Type Required Default Description
array Array/Range Yes ช่วงข้อมูล (Range) หรือ Array ที่ต้องการประมวลผลทีละคอลัมน์ สามารถใช้ Table reference, Named Range หรือ cell reference ได้
lambda LAMBDA function Yes LAMBDA function ที่รับ 1 parameter (คอลัมน์นั้นทั้งคอลัมน์เป็น Array) แล้ว return ค่าเดียว (single value) ต่อคอลัมน์ เช่น SUM, MAX, หรือ custom calculation ถ้า return Array จะได้ #CALC! error

How it works

สรุปสถิติรายคอลัมน์

คำนวณ SUM, MAX, MIN, AVERAGE, COUNT ของแต่ละคอลัมน์พร้อมกันในสูตรเดียว สำหรับสร้าง summary row ใต้ตาราง dashboard

ตรวจสอบคุณภาพข้อมูล (Data Quality Check)

เช็คว่าแต่ละคอลัมน์มีข้อมูลว่างกี่เซลล์ มี error กี่รายการ หรือคำนวณ fill rate (% ข้อมูลที่ไม่ว่าง) เพื่อประเมินความสมบูรณ์ของ dataset

Dashboard Summary

สร้าง summary metrics แบบ horizontal (แถวเดียว) จากหลายคอลัมน์ข้อมูล เช่น quarterly sales totals, monthly revenue comparison

คำนวณ Derived Metrics

หา Range (MAX-MIN), Standard Deviation, Coefficient of Variation หรือ statistical measures อื่นๆ ของแต่ละคอลัมน์

Examples

ตัวอย่างที่ 1: พื้นฐาน – SUM แต่ละคอลัมน์
BYCOL(C5:F14, LAMBDA(col, SUM(col)))
สมมติข้อมูล sales data อยู่ใน 4 คอลัมน์ (Q1-Q4) แต่ละคอลัมน์มี 10 แถว
.
BYCOL วนลูปส่งคอลัมน์ C5:C14 เข้า LAMBDA เป็นคอลัมน์แรก จากนั้น D5:D14, E5:E14, F5:F14 ตามลำดับ
.
LAMBDA รับแต่ละคอลัมน์ (parameter ชื่อ col) แล้วใช้ SUM(col) คำนวณยอดรวม
.
ผลลัพธ์ได้ Array แถวเดียว 4 ค่า แทนที่จะเขียน SUM ซ้ำ 4 ครั้ง ง่ายกว่าเยอะครับ 😎
Excel Formula:

=BYCOL(C5:F14, LAMBDA(col, SUM(col)))

Result:

{15000, 18000, 22000, 25000}

ตัวอย่างที่ 2: Short-form Syntax (Eta Lambda)
BYCOL(C5:F14, SUM)
รูปแบบสั้น (eta lambda) เขียนแค่ชื่อ function โดยไม่ต้องใช้ LAMBDA wrapper
.
ใช้ได้กับ function ที่รับ argument เดียวเท่านั้น เช่น SUM, MAX, MIN, AVERAGE, COUNT, COUNTA
.
ผลลัพธ์เหมือนกับรูปแบบเต็ม แต่สั้นกว่าและอ่านง่ายกว่ามาก ✨
.
เหมาะสำหรับ simple aggregation ที่ไม่ต้องการ logic เพิ่มเติม
Excel Formula:

=BYCOL(C5:F14, SUM)

Result:

{15000, 18000, 22000, 25000}

ตัวอย่างที่ 3: หาค่า MAX และ MIN ของแต่ละคอลัมน์
VSTACK( BYCOL(Scores, MAX), BYCOL(Scores, MIN) )
สมมติ Named Range "Scores" มี 4 คอลัมน์ (คะแนนวิชา Math, Science, English, History)
.
ใช้ BYCOL กับ MAX หาคะแนนสูงสุดของแต่ละวิชา ได้ Array แถวเดียว
.
ใช้ BYCOL กับ MIN หาคะแนนต่ำสุดของแต่ละวิชา ได้อีก Array แถวเดียว
.
ใช้ VSTACK ซ้อน 2 Array เป็นตาราง 2 แถว 4 คอลัมน์
.
เทคนิคนี้ใช้คำนวณหลาย metric พร้อมกันใน formula เดียว ประหยัดเวลาเยอะครับ 💡
Excel Formula:

=VSTACK(
  BYCOL(Scores, MAX),
  BYCOL(Scores, MIN)
)

Result:

Array 2 แถว:
แถว 1: {95, 98, 92, 100}
แถว 2: {55, 48, 62, 70}

ตัวอย่างที่ 4: นับจำนวนที่เกินเกณฑ์ (Conditional Count)
BYCOL(C5:F14, LAMBDA(col, SUM(--(col>900))))
นับว่าแต่ละคอลัมน์มีค่ามากกว่า 900 กี่รายการ
.
สมมติข้อมูลเป็นยอดขายรายวันของแต่ละสาขา (4 สาขา)
.
(col>900) สร้าง Array ของ TRUE/FALSE
.
Double negative (–) แปลง TRUE→1, FALSE→0
.
SUM นับจำนวน 1 (คือจำนวนวันที่ขายเกิน 900)
.
ผลลัพธ์: สาขา Q1 มี 3 วัน, Q2 มี 5 วัน, Q3 มี 7 วัน, Q4 มี 8 วัน ที่ยอดขายเกิน 900
.
เทคนิค double negative นี้เจ๋งมากครับ ใช้บ่อยเลยในการนับแบบมีเงื่อนไข 🔥
Excel Formula:

=BYCOL(C5:F14, LAMBDA(col, SUM(--(col>900))))

Result:

{3, 5, 7, 8}

ตัวอย่างที่ 5: หา Range (ความกว้างของข้อมูล)
BYCOL(Prices, LAMBDA(c, MAX(c) - MIN(c)))
สมมติ Named Range "Prices" เก็บราคาสินค้า 4 หมวดหมู่ (แต่ละคอลัมน์)

หา Range (ความแตกต่างระหว่างราคาสูงสุดและต่ำสุด) ของแต่ละหมวดหมู่

LAMBDA คำนวณ MAX(c) – MIN(c) สำหรับแต่ละคอลัมน์

ผลลัพธ์แสดงว่าหมวดที่ 1 มีช่วงราคา 500 บาท, หมวดที่ 4 มีช่วงราคากว้างที่สุด (1200 บาท)

ใช้ในการวิเคราะห์ price volatility หรือ product diversity

Excel Formula:

=BYCOL(Prices, LAMBDA(c, MAX(c) - MIN(c)))

Result:

{500, 750, 300, 1200}

ตัวอย่างที่ 6: คำนวณ Fill Rate (% ข้อมูลที่ไม่ว่าง)
BYCOL(Data, LAMBDA(c, COUNTA(c) / ROWS(c)))
สมมติ Named Range "Data" มี 4 คอลัมน์ แต่ละคอลัมน์มี 50 แถว

หาสัดส่วนข้อมูลที่ไม่ว่าง (Fill Rate) ของแต่ละคอลัมน์

COUNTA(c) นับเซลล์ที่มีข้อมูล

ROWS(c) นับจำนวนแถวทั้งหมด (50)

หารกันได้ ratio: 1.0 = ไม่มีช่องว่างเลย, 0.96 = ว่าง 2 เซลล์จาก 50, 0.9 = ว่าง 5 เซลล์

ใช้ตรวจสอบคุณภาพข้อมูล (data quality check) ว่าคอลัมน์ไหนมีข้อมูลขาดหาย

Excel Formula:

=BYCOL(Data, LAMBDA(c, COUNTA(c) / ROWS(c)))

Result:

{1, 0.96, 1, 0.9}

ตัวอย่างที่ 7: ใช้กับ Table Structured Reference
BYCOL(SalesTable[Q1:Q4], LAMBDA(quarter, AVERAGE(quarter)))
สมมติ Excel Table ชื่อ "SalesTable" มีคอลัมน์ Q1, Q2, Q3, Q4

ใช้ structured reference SalesTable[Q1:Q4] เลือกช่วงคอลัมน์

BYCOL ส่งแต่ละคอลัมน์ (ทั้งคอลัมน์) เข้า LAMBDA

LAMBDA คำนวณ AVERAGE ของแต่ละไตรมาส

ข้อดี: ถ้าเพิ่มแถวใน Table formula จะ auto-expand ไม่ต้องแก้สูตร

เหมาะสำหรับ dashboard ที่ข้อมูลเปลี่ยนแปลงบ่อย

Excel Formula:

=BYCOL(SalesTable[Q1:Q4], LAMBDA(quarter, AVERAGE(quarter)))

Result:

{1500, 1800, 2200, 2500}

ตัวอย่างที่ 8: Advanced – หา Standard Deviation
BYCOL(TestScores, LAMBDA(col, STDEV.P(col)))
สมมติ Named Range "TestScores" เก็บคะแนนสอบของ 4 ห้องเรียน

หา Standard Deviation (ค่าเบี่ยงเบนมาตรฐาน) ของแต่ละห้อง

STDEV.P() คำนวณ population standard deviation

ผลลัพธ์แสดงความกระจายของคะแนน: ห้องที่ 3 มีค่า SD ต่ำสุด (10.8) = คะแนนกระจุกตัว, ห้องที่ 2 มีค่า SD สูงสุด (15.3) = คะแนนกระจาย

ใช้วิเคราะห์ consistency ของข้อมูล

Excel Formula:

=BYCOL(TestScores, LAMBDA(col, STDEV.P(col)))

Result:

{12.5, 15.3, 10.8, 14.2}

FAQs

BYCOL ต่างจาก BYROW อย่างไร?

BYCOL ส่งทีละคอลัมน์ (ทั้งคอลัมน์ทีละคอลัมน์) เข้า LAMBDA แล้ว return Array แนวนอน 1 แถว (1×n)
.
ส่วน BYROW ส่งทีละแถว (ทั้งแถวทีละแถว) แล้ว return Array แนวตั้ง 1 คอลัมน์ (n×1)
.
ตัวอย่างง่ายๆ ครับ: ถ้ามี Array 5 แถว 3 คอลัมน์
– BYCOL จะวนลูป 3 รอบ (3 คอลัมน์) return Array 1×3
– BYROW จะวนลูป 5 รอบ (5 แถว) return Array 5×1
.
ใช้ BYCOL เมื่อต้องการสรุปทีละคอลัมน์ (เช่น quarterly totals) และ BYROW เมื่อต้องการสรุปทีละแถว (เช่น row totals)
.
ส่วนตัวผมคิดว่า… จำง่ายๆ ว่า BYCOL = column-wise, BYROW = row-wise ครับ 😅

BYCOL ต่างจาก MAP อย่างไร?

MAP ส่งทีละ element (1 เซลล์) เข้า LAMBDA และ return Array ขนาดเท่าเดิม
.
ส่วน BYCOL ส่งทั้งคอลัมน์ (หลายเซลล์เป็น Array) และ return Array แถวเดียว
.
ตัวอย่าง: Array 3×4 (3 แถว 4 คอลัมน์)
– MAP: วนลูป 12 รอบ (3×4 เซลล์) return Array 3×4
– BYCOL: วนลูป 4 รอบ (4 คอลัมน์) return Array 1×4
.
ใช้ MAP เมื่อต้องการ transform ทุก element (เช่น multiply by 2) และ BYCOL เมื่อต้องการ aggregate แต่ละคอลัมน์ (เช่น SUM)
.
ง่ายๆ คือ MAP = แปลงทุกเซลล์, BYCOL = สรุปทีละคอลัมน์ครับ 💡

LAMBDA ต้อง return ค่าเดียวเสมอหรือไม่?

ใช่ครับ BYCOL คาดหวังให้ LAMBDA return ค่าเดียว (single value) ต่อคอลัมน์ เช่น SUM, MAX, COUNT, AVERAGE
.
ถ้า LAMBDA return Array (หลายค่า) จะได้ #CALC! error ทันที 😭
.
ตัวอย่างที่ถูก: LAMBDA(c, SUM(c)) → return single value ✅
ตัวอย่างที่ผิด: LAMBDA(c, SORT(c)) → return Array → #CALC! ❌
.
ถ้าต้องการ return Array ใช้ MAP หรือ MAKEARRAY แทนนะครับ

ใช้ BYCOL กับ Table structured reference ได้หรือไม่?

ใช้ได้ครับ และแนะนำให้ใช้เลยเพราะทำให้สูตร dynamic มากๆ ✨
.
รูปแบบ: =BYCOL(TableName[Col1:Col4], LAMBDA(c, SUM(c)))
.
ข้อดีเยอะมากครับ:
– Auto-expand เมื่อเพิ่มแถวใน Table
– อ่านง่ายกว่า cell reference (A1:D10)
– รองรับ dynamic data
.
ส่วนตัวผมใช้ Table reference เกือบทุกครั้งเลย เพราะไม่ต้องมานั่งแก้สูตรตอนข้อมูลเพิ่ม 😎
.
ใช้ได้ทั้ง Table reference และ Named Range ตามความเหมาะสมครับ

Short-form syntax (Eta Lambda) ใช้ได้กับ function ไหนบ้าง?

Short-form =BYCOL(array, SUM) ใช้ได้กับ function ที่รับ argument เดียวเท่านั้นครับ
.
ใช้ได้: SUM, MAX, MIN, AVERAGE, COUNT, COUNTA, STDEV, VAR ✅
ใช้ไม่ได้: SUMIF (ต้องการ 2-3 arguments), VLOOKUP (ต้องการหลาย arguments) ❌
.
ถ้า function ต้องการหลาย arguments หรือมี logic ซับซ้อน ต้องใช้รูปแบบเต็ม =BYCOL(array, LAMBDA(c, …)) แทนนะครับ
.
ส่วนตัวผมชอบใช้ short-form มากเพราะเขียนเร็วกว่า แต่ถ้า logic ซับซ้อนก็ต้องกลับไปใช้ LAMBDA แบบเต็ม 😅

BYCOL รองรับ Excel เวอร์ชันไหน?

BYCOL รองรับเฉพาะ:
– Microsoft 365 (subscription) ✅
– Excel 2024 ✅
– Excel for the web ✅
.
ไม่รองรับ: Excel 2021, Excel 2019 หรือรุ่นเก่ากว่า ❌
.
เป็น LAMBDA Helper Function ที่เพิ่มเข้ามาใน Excel 365 พร้อมกับ BYROW, MAP, REDUCE, SCAN, MAKEARRAY
.
ถ้าไฟล์เปิดใน Excel รุ่นเก่า formula จะแสดง #NAME! error ทันที 😭
.
เลยต้องเช็คก่อนนะครับว่าคนที่จะเปิดไฟล์ใช้ Excel เวอร์ชันไหน ไม่งั้น formula จะพังหมด

จะใช้ BYCOL คำนวณหลาย metric พร้อมกันได้อย่างไร?

ใช้ VSTACK หรือ HSTACK รวม BYCOL หลายตัวเข้าด้วยกันครับ 😎
.
ตัวอย่าง:
=VSTACK(
BYCOL(Data, SUM),
BYCOL(Data, MAX),
BYCOL(Data, MIN),
BYCOL(Data, AVERAGE)
)
.
ได้ Array 4 แถว (แต่ละแถวคือ metric หนึ่ง) × n คอลัมน์
.
หรือใช้ LET สร้าง variables จะอ่านง่ายกว่า:
=LET(
sums, BYCOL(Data, SUM),
maxs, BYCOL(Data, MAX),
VSTACK(sums, maxs)
)
.
เหมาะสำหรับสร้าง dashboard summary table มากครับ ผมใช้เทคนิคนี้บ่อยมาก 💡

BYCOL ทำงานกับ empty cells หรือ errors อย่างไร?

BYCOL ส่งคอลัมน์ทั้งคอลัมน์ (รวม empty cells และ errors) เข้า LAMBDA ทั้งหมดเลยครับ
.
การจัดการขึ้นกับ function ที่ใช้:
– SUM, AVERAGE, MAX, MIN: ignore empty cells โดย default ✅
– COUNTA: นับเฉพาะ non-empty cells
– COUNTBLANK: นับเฉพาะ empty cells
– SUM ถ้าเจอ error (เช่น #VALUE!) จะ return error ทั้งคอลัมน์ 😭
.
ถ้าต้องการ filter errors ออก ใช้:
=BYCOL(Data, LAMBDA(c, SUM(FILTER(c, NOT(ISERROR(c))))))
.
หรือใช้ AGGREGATE function ที่ ignore errors อยู่แล้ว สะดวกกว่า 💡

Resources & Related

Additional Notes

BYCOL เป็น LAMBDA Helper Function ที่ทรงพลังสำหรับการประมวลผล Array แบบ column-wise (ทีละคอลัมน์) โดยส่งแต่ละคอลัมน์ทั้งคอลัมน์เข้าไปใน LAMBDA function แล้ว return ผลลัพธ์เป็น Array แถวเดียว (single row)

.

ที่เจ๋งคือ BYCOL ต่างจาก MAP ที่ส่งทีละเซลล์ และ BYROW ที่ส่งทีละแถว นะครับ ทำให้เราสามารถคำนวณ SUM, MAX, AVERAGE หรือสถิติอื่นๆ ของแต่ละคอลัมน์พร้อมกันในสูตรเดียว สร้าง summary row สำหรับตารางข้อมูลได้แบบมีประสิทธิภาพมาก 😎

.

เคยเจอมั้ยครับว่า… ต้องนั่งเขียนสูตร SUM ซ้ำๆ หลายตัวสำหรับแต่ละคอลัมน์ แล้วพอแก้ไข logic ต้องมาแก้ทุกสูตร เสียเวลามาก 😅

.

BYCOL มันแก้ปัญหานี้ได้เลยครับ แทนที่จะเขียนสูตรซ้ำหลายตัว เราก็เขียนสูตรเดียวที่ elegant และ maintainable กว่ามาก โดยเฉพาะเมื่อต้องการคำนวณค่าสถิติหรือ metric ที่เหมือนกันกับทุกคอลัมน์ใน dataset

.

ส่วนตัวผมใช้ BYCOL บ่อยมากสำหรับงาน data analysis, dashboard summary, และ quality checking เพราะมันประมวลผลข้อมูลทั้งหมดในคราวเดียว ลดโอกาสเกิด error และแก้ไข logic ได้ง่ายกว่าเยอะ 💡

Leave a Reply

Your email address will not be published. Required fields are marked *