---
title: BYCOL – ประมวลผลทีละคอลัมน์ด้วย LAMBDA
url: https://www.thepexcel.com/functions/excel/logical/bycol/
type: function-explainer
program: Excel
syntax: "=BYCOL(array, lambda)"
date: 2025-12-18
scores:
  popularity: 8
  difficulty: 6
  usefulness: 9
---

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

> วนลูปส่งทีละคอลัมน์เข้า LAMBDA return Array แถวเดียว

## คำอธิบาย

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

## Syntax

```excel
=BYCOL(array, lambda)
```

**excel**

```excel
=BYCOL(array, LAMBDA(col, SUM(col)))
```

รูปแบบเต็ม (long-form) ใช้ LAMBDA กับ parameter ชื่อ col

**excel**

```excel
=BYCOL(array, SUM)
```

รูปแบบสั้น (eta lambda) ใช้ได้กับ function ที่รับ argument เดียว

**excel**

```excel
=BYCOL(SalesData[Q1:Q4], LAMBDA(quarter, SUM(quarter)))
```

ใช้กับ Table structured reference สำหรับ dynamic range

## Arguments

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

## เคสการใช้งาน

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

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

_เหมาะกับ:_ statistics

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

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

_เหมาะกับ:_ data-quality

### Dashboard Summary

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

_เหมาะกับ:_ reporting

### คำนวณ Derived Metrics

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

_เหมาะกับ:_ analytics

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: พื้นฐาน - SUM แต่ละคอลัมน์

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

**ผลลัพธ์:** `{15000, 18000, 22000, 25000}`

สมมติข้อมูล 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 ครั้ง ง่ายกว่าเยอะครับ 😎

### 2. ตัวอย่างที่ 2: Short-form Syntax (Eta Lambda)

```excel
=BYCOL(C5:F14, SUM)
```

**ผลลัพธ์:** `{15000, 18000, 22000, 25000}`

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

### 3. ตัวอย่างที่ 3: หาค่า MAX และ MIN ของแต่ละคอลัมน์

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

**ผลลัพธ์:** `Array 2 แถว:
แถว 1: {95, 98, 92, 100}
แถว 2: {55, 48, 62, 70}`

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

### 4. ตัวอย่างที่ 4: นับจำนวนที่เกินเกณฑ์ (Conditional Count)

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

**ผลลัพธ์:** `{3, 5, 7, 8}`

นับว่าแต่ละคอลัมน์มีค่ามากกว่า 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 นี้เจ๋งมากครับ ใช้บ่อยเลยในการนับแบบมีเงื่อนไข 🔥

### 5. ตัวอย่างที่ 5: หา Range (ความกว้างของข้อมูล)

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

**ผลลัพธ์:** `{500, 750, 300, 1200}`

สมมติ Named Range "Prices" เก็บราคาสินค้า 4 หมวดหมู่ (แต่ละคอลัมน์)

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

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

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

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

### 6. ตัวอย่างที่ 6: คำนวณ Fill Rate (% ข้อมูลที่ไม่ว่าง)

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

**ผลลัพธ์:** `{1, 0.96, 1, 0.9}`

สมมติ 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) ว่าคอลัมน์ไหนมีข้อมูลขาดหาย

### 7. ตัวอย่างที่ 7: ใช้กับ Table Structured Reference

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

**ผลลัพธ์:** `{1500, 1800, 2200, 2500}`

สมมติ Excel Table ชื่อ "SalesTable" มีคอลัมน์ Q1, Q2, Q3, Q4

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

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

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

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

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

### 8. ตัวอย่างที่ 8: Advanced - หา Standard Deviation

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

**ผลลัพธ์:** `{12.5, 15.3, 10.8, 14.2}`

สมมติ Named Range "TestScores" เก็บคะแนนสอบของ 4 ห้องเรียน

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

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

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

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

## หมายเหตุเพิ่มเติม

💡 **เทคนิคที่ผมใช้บ่อย:**
.
BYCOL เป็น LAMBDA Helper Function ตัวเจ๋งที่ทำให้เราคำนวณสรุปทีละคอลัมน์ได้แบบ dynamic array ง่ายๆ แทนที่จะต้องเขียนสูตร SUM หลายตัว ผมมักใช้มันร่วมกับ VSTACK เพื่อสร้าง dashboard summary หลาย metric พร้อมกัน เช่น:
.
```
=VSTACK(
  BYCOL(Data, SUM),
  BYCOL(Data, AVERAGE),
  BYCOL(Data, MAX)
)
```
.
จะได้ตารางสรุปที่มีทั้งผลรวม ค่าเฉลี่ย และค่าสูงสุดของทุกคอลัมน์ในคราวเดียว เจ๋งมากครับ 😎
.
**Tips สำคัญ:**
- ใช้ short-form =BYCOL(Data, SUM) แทน LAMBDA เต็มรูป สั้นกว่าและอ่านง่ายกว่า
- ใช้กับ Table reference (SalesTable[Q1:Q4]) จะ auto-expand เมื่อข้อมูลเพิ่ม
- ถ้า LAMBDA ต้อง return ค่าเดียวเท่านั้น ถ้า return array จะได้ #CALC! error
.
ส่วนตัวผมชอบใช้ BYCOL สำหรับทำ quarterly summary และ data quality checks มากครับ ลองใช้ดูแล้วจะติดใจแน่นอน 💡

## คำถามที่พบบ่อย

**Q: 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 ครับ 😅

**Q: 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 = สรุปทีละคอลัมน์ครับ 💡

**Q: 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 แทนนะครับ

**Q: ใช้ 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 ตามความเหมาะสมครับ

**Q: 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 แบบเต็ม 😅

**Q: 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 จะพังหมด

**Q: จะใช้ 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 มากครับ ผมใช้เทคนิคนี้บ่อยมาก 💡

**Q: 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 อยู่แล้ว สะดวกกว่า 💡

## ฟังก์ชันที่เกี่ยวข้อง

- [BYROW – ประมวลผลทีละแถวด้วย LAMBDA](https://www.thepexcel.com/functions/excel/logical/byrow/)
- [LAMBDA – สร้างฟังก์ชันที่กำหนดเอง](https://www.thepexcel.com/functions/excel/logical/lambda/)
- [MAP – ประมวลผลทุก Element ใน Array ด้วย LAMBDA](https://www.thepexcel.com/functions/excel/logical/map/)
- [REDUCE – รวมผลลัพธ์จาก Array เป็นค่าเดียว](https://www.thepexcel.com/functions/excel/logical/reduce/)
- [SCAN – คำนวณและแสดงผลลัพธ์สะสมทุกขั้นตอน](https://www.thepexcel.com/functions/excel/logical/scan/)
- [MAKEARRAY – สร้าง Array ด้วย LAMBDA แบบกำหนดเอง](https://www.thepexcel.com/functions/excel/logical/makearray/)
- [FILTER – ฟังก์ชันกรองข้อมูลแบบไดนามิก](https://www.thepexcel.com/functions/excel/lookup-and-reference/filter/)
- [SORT – ฟังก์ชันเรียงลำดับแบบสไปล์](https://www.thepexcel.com/functions/excel/lookup-and-reference/sort/)
- [VSTACK – ฟังก์ชันรวมข้อมูลแนวตั้ง](https://www.thepexcel.com/functions/excel/lookup-and-reference/vstack/)
- [HSTACK – ฟังก์ชันรวมข้อมูลแนวนอน](https://www.thepexcel.com/functions/excel/lookup-and-reference/hstack/)
- [LET – กำหนดตัวแปรในสูตรเพื่อเพิ่มความเร็วและความชัดเจน](https://www.thepexcel.com/functions/excel/logical/let/)
- [AGGREGATE – คำนวณแบบละเว้น Error และแถวที่ซ่อน](https://www.thepexcel.com/functions/excel/math-and-trigonometry/aggregate/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Support: BYCOL function](https://support.microsoft.com/en-us/office/bycol-function-58463999-7de5-49ce-8f38-b7f7a2192bfb) _(official)_
- [ExcelJet: How to use BYCOL function](https://exceljet.net/excel-functions/excel-bycol-function) _(guide)_
- [Microsoft: Introduction to LAMBDA Helper Functions](https://support.microsoft.com/en-us/office/advanced-formula-environment-dab26ca0-0b3c-45bc-9b3e-cda5e83ec7dd) _(official)_

---

_Source: [https://www.thepexcel.com/functions/excel/logical/bycol/](https://www.thepexcel.com/functions/excel/logical/bycol/)_
