ฉันมีข้อมูลใน excel ซึ่งดูเหมือนว่า
10
15
12
3
2
5
3
ฉันต้องการให้ส่งคืนผลรวมย่อยเช่น
10
15
12
37
3
2
5
5
3
8
มีวิธีในการบรรลุสิ่งนี้ใน Excel หรือไม่?
ฉันมีข้อมูลใน excel ซึ่งดูเหมือนว่า
10
15
12
3
2
5
3
ฉันต้องการให้ส่งคืนผลรวมย่อยเช่น
10
15
12
37
3
2
5
5
3
8
มีวิธีในการบรรลุสิ่งนี้ใน Excel หรือไม่?
คำตอบ:
ทางเลือกที่อาจมีการใช้งานบางอย่างและอาจมีความหลากหลายมากขึ้น (หลีกเลี่ยง 'สัตว์ประหลาด' ในกรณีที่ไม่สามารถส่ง / รักษาด้วยมือได้ง่าย) คือการรวมการดำเนินการที่คุ้นเคยเข้าด้วยกัน
สมมติว่า: ColumnA
คือ 'ว่าง'; ค่าอยู่ในColumnB
; Row1
มีป้ายกำกับและC1
มีบางอย่างในนั้น (พูดว่า 'ผลรวม')
ต้องใช้บัตรประจำตัวของ 'บล็อก' ค่าเพื่อกรองA:C
, untick (Blanks)
ในB
คีย์พูด 'V' เข้าA2
และคัดลอกลงไปที่หมายเลขแถวสีฟ้าที่ผ่านมา
เลือกA1:C{last blue row number}
เอาตัวกรอง (ถ้าจำเป็นต้องมีการจัดกลุ่ม) ผลรวมย่อยที่มีในแต่ละการเปลี่ยนแปลงใน: '(คอลัมน์ A), การใช้งานฟังก์ชั่น: 'ซำ' เพิ่มผลรวมย่อยให้กับ: ติ๊ก OK
'ซำ'
ลบแถวว่างเปล่า (เช่นโดยการกรองColumnA
) ColumnA
แล้วลบ
เลือกColumnB
หาสิ่งที่: 'B' แทนที่ด้วย: 'A' Replace All
คลิก
ยอดรวมทั้งหมดเป็นโบนัส
ฉันมากับสัตว์ประหลาดตัวนี้ แต่มันใช้ได้ดีคุณสามารถคัดลอกมันลงได้:
=IF(ISBLANK(A4),SUBTOTAL(9,OFFSET(B4,IFERROR(MATCH(0,$B$1:B3,-1),1)-ROW(),-1,ROW()-IFERROR(MATCH(0,$B$1:B3,-1),1),1)),"")
นี่คือต้นฉบับของฉัน (เยอรมัน):
=WENN(ISTLEER(A4);TEILERGEBNIS(9;BEREICH.VERSCHIEBEN(B4;WENNFEHLER(VERGLEICH(0;$B$1:B3;-1);1)-ZEILE();-1;ZEILE()-WENNFEHLER(VERGLEICH(0;$B$1:B3;-1);1);1));"")
ดังนั้นเมื่อเซลล์ใน Col A ว่างให้ทำ subsum โดยรวมค่า obove ขึ้นไปจนถึง subsum สุดท้ายหรือ 1
หากฟอรัมไม่ชัดเจนโปรดสอบถามเกี่ยวกับข้อมูลเฉพาะ
แก้ไข
ในรหัสหลอก / อธิบายแล้ว:
IF(ISBLANK(A4),SUBTOTAL(),"")
หากเซลล์ของแถวปัจจุบันในคอลัมน์ A ว่างให้คำนวณผลรวมย่อยไม่เช่นนั้นจะไม่แสดงอะไรเลย
SUBTOTAL(9,RANGE)
สร้างผลรวมย่อยโดยใช้ฟังก์ชันผลรวม (9) สำหรับ RANGE ที่กำหนด
RANGE = OFFSET(B4,ROWS,COLS,HEIGHT,WIDTH)
ช่วงของผลรวมย่อยถูกสร้างขึ้นโดยการชดเชย / ขยายขอบเขตขึ้นอยู่กับเซลล์ B4
ในตัวอย่างที่เป็นรูปธรรมของ B4 นี้จะเหมือนกับการเขียน:
OFFSET(B4,-3,-1,3,1)
ดังนั้นสร้างช่วงซึ่งมี 3 แถวด้านบน B4 (-3) และ 1 คอลัมน์ทางซ้าย (-1) และคือ 3 แถวลง / สูงและกว้าง 1 คอลัมน์
ในการคำนวณ -3 และ 3 ซึ่งจะแตกต่างกันไปตามแถวระหว่างสองเซลล์ว่างในคอลัมน์ A เราใช้สิ่งเหล่านี้:
IFERROR(MATCH(0,$B$1:B3,-1),1)-ROW()
ROW()-IFERROR(MATCH(0,$B$1:B3,-1)
ซึ่งโดยทั่วไปแล้วจะเหมือนกันยกเว้นเครื่องหมาย
MATCH(0,$B$1:B3,-1)
ค้นหาสิ่งที่อยู่เหนือ 0 (-1 หมายถึงใหญ่กว่า) ในคอลัมน์ b จากเซลล์แรกไปยังเซลล์ก่อนหน้าของเซลล์ปัจจุบัน ($ B $ 1: B3)
เนื่องจากการทำเช่นนี้จะส่งผลให้เกิดข้อผิดพลาดสำหรับผลรวมย่อยแรกข้อIFERROR
เสนอที่ 1 เพื่อแก้ไขสิ่งนี้
ดังนั้นเมื่อคุณอยู่ใน B4 คุณจะค้นหาว่ามีค่าใด ๆ ที่สูงกว่า B4 สมมติว่านี่เป็นผลรวมย่อยและถ้าคุณหาไม่พบคุณก็ใช้ 1 เป็นแถวของคุณ 1-4 = -3; 4-1 = 3 ไปแล้ว
37
ตัวอย่างของคุณ ฉันจะตรวจสอบอีกครั้ง
สูตรสั้นทางเลือกอื่นที่คุณสามารถลอง:
บรรทัดสูงสุดในการคำนวณสามารถเพิ่มได้โดยการเพิ่ม "$ A $ 1,000" โดยใช้ A2 เป็นบรรทัดที่ 1:
= IF (A2 = "", SUM ($ A $ 1: $ A $ 1000) -SUM (A3: $ A $ 1000) -SUM ($ B $ 1: N2), "")
ฉันคิดวิธีแก้ปัญหาแบบเดียวกันนี้ขึ้นมา:
แก้ไขโดยใช้=if(isblank(a2),H1+1,H1+0)
สูตรใน H2 และ 1 ใน H1 หลังจากนั้นใช้คำบรรยายง่าย ๆ เพื่อแก้ปัญหา