ฉันได้พบกับความต้องการนี้หลายครั้งและสามารถสรุปได้ว่าจะต้องมีวิธีที่ง่ายขึ้นและปรับขนาดได้มากขึ้นเพื่อทำสิ่งที่ฉันพยายามทำที่นี่
โดยพื้นฐานแล้วฉันต้องการตาราง 3 มิติที่ฉันสามารถสร้างผลรวมกับ ...
รับสองตาราง:
| People | One | Two | Three | Four | Five | Six |
|--------|-----|-----|-------|------|------|-----|
| John | x | x | | | | |
| James | | x | x | | | |
| Jim | | | x | x | | |
| Jean | | | | x | x | |
| Jammie | | | | | x | x |
| Janis | x | | | | | x |
และ
| Event | Data |
|-------|------|
| One | 1 |
| Two | 2 |
| Three | 3 |
| Four | 4 |
| Five | 5 |
| Six | 6 |
ฉันกำลังสร้างผลรวมตามเซลล์ที่ไม่ว่างในตารางที่ 1 และค่าที่เกี่ยวข้องในตารางที่สองเพื่อสร้าง:
| Totals |
|--------|
| 3 |
| 5 |
| 7 |
| 9 |
| 11 |
| 7 |
ฉันใช้ vlookup ที่ซับซ้อนเพื่อผลิตสิ่งนี้:
=SUM(
IF(NOT(ISBLANK(Table1[@One])),VLOOKUP(Table1[[#Headers],[One]],Table2,2,FALSE),0),
IF(NOT(ISBLANK(Table1[@Two])),VLOOKUP(Table1[[#Headers],[Two]],Table2,2,FALSE),0),
IF(NOT(ISBLANK(Table1[@Three])),VLOOKUP(Table1[[#Headers],[Three]],Table2,2,FALSE),0),
IF(NOT(ISBLANK(Table1[@Four])),VLOOKUP(Table1[[#Headers],[Four]],Table2,2,FALSE),0),
IF(NOT(ISBLANK(Table1[@Five])),VLOOKUP(Table1[[#Headers],[Five]],Table2,2,FALSE),0),
IF(NOT(ISBLANK(Table1[@Six])),VLOOKUP(Table1[[#Headers],[Six]],Table2,2,FALSE),0)
)
เห็นได้ชัดว่านี่ไม่สามารถปรับขนาดได้และทำให้มีพื้นที่เหลือสำหรับข้อผิดพลาดของมนุษย์ ในทางปฏิบัติแอปพลิเคชันจริงนั้นเกี่ยวข้องกับการเพิ่มหรือลบผู้ใช้และ "เหตุการณ์" ฉันรู้สึกว่าฉันเจอเวลาที่มากพอที่จะอยู่คนเดียวไม่ได้และฉันต้องทำสิ่งนี้อย่างหนัก มีตัวเลือกง่ายขึ้นไหม
* โปรดทราบว่าในตัวอย่างนี้ฉันใช้ผลรวม แต่ในบางกรณีฉันอาจมีข้อความที่ฉันต้องการทำTEXTJOIN
หรือคล้ายกัน