ฟังก์ชั่นของ Excel จะกำหนดว่าจะมองเห็นเซลล์หรือไม่


12

ในการจัดรูปแบบตามเงื่อนไขฉันต้องการตรวจสอบว่าแถวด้านบนเซลล์ปัจจุบันถูกซ่อนหรือมองเห็นได้ ฉันจะตรวจสอบได้อย่างไรว่าเซลล์มองเห็นได้หรือไม่?

แฮ็คเดียวที่ฉันนึกได้คือ

  1. สร้างคอลัมน์ที่มี1ค่าทั้งหมด
  2. ใช้สูตรเช่นsubtotal(109,c2:c2)=1(เช่นในเซลล์ที่ฉันต้องการตรวจสอบ) เพื่อตรวจสอบว่ามันสามารถมองเห็นได้หรือซ่อนอยู่

มีวิธีการทำเช่นนี้หรือไม่โดยไม่ต้องมีคอลัมน์ชั่วคราวที่ต้องปรากฏให้เห็นเมื่อแถวปรากฏขึ้น?


เพื่อหลีกเลี่ยงปัญหา XYสิ่งที่ฉันต้องการทำคือมีคอลัมน์ที่เป็นหมวดหมู่สำหรับแถวนั้น แถวแรกที่มองเห็นได้ซึ่งมีหมวดหมู่เฉพาะควรมีสไตล์แตกต่างกัน แถวถัดไปที่มีหมวดหมู่เดียวกันจะแตกต่างกันเล็กน้อย ใน ASCII:

cat.   item
+AAA+  aaaa
(AAA)  bbbb
(AAA)  cccc
+BBB+  dddd
(BBB)  eeee
(BBB)  ffff

หากตัวกรองของฉันซ่อนแถวด้วยddddฉันต้องการให้แถวeeeeนั้นมี+BBB+สไตล์แทน

คำตอบ:


13

แทนที่จะใช้ผลรวมย่อยโดยใช้ผลรวมในคอลัมน์อื่นคุณสามารถใช้ผลรวมย่อยโดยใช้countaเพื่อดูว่าเซลล์ (ไม่รู้จักว่างเปล่า) ถูกซ่อนหรือไม่ ตัวอย่างเช่นถ้าAปกติจะมองเห็นคอลัมน์(ยกเว้นว่าแถวนั้นซ่อนอยู่)

= IF( SUBTOTAL(103,A2)=1, "VISIBLE", "HIDDEN (or blank)" )

คุณสามารถวางสูตรนี้ในคอลัมน์ที่อาจซ่อนอยู่และจะยังคงใช้งานได้

ในการจัดรูปแบบตามเงื่อนไขคุณสามารถใช้: = SUBTOTAL(103,$A2)=1เพื่อตรวจสอบว่าแถวนั้นปรากฏหรือไม่


5

ภาคผนวกของคำตอบของ Phrogz หากคุณต้องการตรวจสอบว่ามีการซ่อนเซลล์ในคอลัมน์หรือไม่ให้ลองทำอย่างใดอย่างหนึ่งต่อไปนี้

การจัดรูปแบบตามเงื่อนไข

=CELL("width",TargetCell)=0

อัปเดตนี้โดยอัตโนมัติทันทีที่คอลัมน์ถูกซ่อน

ตรวจสอบสูตร

=IF(CELL("width",TargetCell)=0, "Cell is hidden.", "Cell is visible.")

สูตรนี้จะไม่อัปเดตโดยอัตโนมัติและคุณจะต้องนำ Excel ไปที่ "คำนวณทันที" โดยเลือกตัวเลือกเมนูหรือกด "F9"


1

สิ่งนี้คล้ายกับวิธีการของ Gary กำหนดฟังก์ชั่น VBA ต่อไปนี้:

Function MyRowHidden(ref As Range)
    MyRowHidden = Rows(ref.Row).Hidden
End Function

ดูฉันจะเพิ่ม VBA ใน MS Office ได้อย่างไร หากคุณต้องการความช่วยเหลือ ตอนนี้คุณสามารถใช้ เพื่อตรวจสอบว่าแถวที่มีถูกซ่อนอยู่หรือไม่MyRowHidden(cell)cell

วิธีที่ฉันคิดในการแก้ปัญหาใช้คอลัมน์ผู้ช่วย แต่คุณสามารถซ่อนได้ สมมติว่าข้อมูลของคุณจะเริ่มต้นในแถว2กับประเภทในคอลัมน์Aป้อน

=OR($A1<>$A2, AND(H1,MyRowHidden(H1)))

ลงในเซลล์H2แล้วลากลง สูตรนี้ประเมินเป็น TRUE หาก

  • หมวดหมู่ในแถวนี้ ( A2) แตกต่างจากหมวดหมู่ในแถวก่อนหน้า ( A1); นั่นคือแถวแรกของหมวดหมู่ใหม่หรือ
  • แถวก่อนหน้าควรถูกเน้น แต่ถูกซ่อนอยู่

จากนั้นใช้การจัดรูปแบบตามเงื่อนไขเพื่อไฮไลต์เซลล์A2หาก=H2เป็นจริง

ตัวอย่าง: ข้อมูลดิบ:

        ชุดข้อมูลแบบเต็ม

ใช่ฉันเป็นนักอนุรักษนิยม ฉันยังคงนับพลูโตเป็นดาวเคราะห์ ที่นี่เป็นอีกครั้งโดยซ่อนแถวหมายเลขเฉพาะ (2, 3, 5, 7, 11 และ 13) ที่ซ่อนอยู่:

        ข้อมูลที่กรอง

แน่นอนคุณต้องเปิดใช้งานแมโครในสมุดงานของคุณ


0

ในการตรวจสอบว่าแถวด้านบนเซลล์ที่ใช้งานคือซ่อนอยู่ให้เรียกใช้แมโครนี้:

Sub WhatsAboveMe()
Dim r As Range
Set r = Selection
With r
    If .Row = 1 Then
        Exit Sub
    End If
    If .Offset(-1, 0).EntireRow.Hidden = True Then
        MsgBox "the row above is hidden"
    Else
        MsgBox "the row above is visible"
    End If
End With
End Sub

1
พวกเขาจะเรียกใช้จากการจัดรูปแบบตามเงื่อนไขอย่างไร (ถามในคำถาม)
CharlieRB

0

เธรดนี้เก่าไปหน่อย แต่ในกรณีที่เป็นประโยชน์กับทุกคนนี่คือวิธีการจัดรูปแบบรายการที่ซ้ำกันตามเงื่อนไขบนตารางที่กรองโดยไม่ต้องใช้ VBA

  1. สร้างคอลัมน์ที่มีประชากร 1 แห่ง
  2. สร้างอีกคอลัมน์หนึ่งแล้วใส่สูตรเช่นนี้ลงไป

    =IF(SUBTOTAL(103, [@ColumnWithOnlyOnesInIt])=1, [@ColumnYouWantToCheckForDuplicates], "")

  3. ใส่การจัดรูปแบบตามเงื่อนไขที่ซ้ำกันตามปกติในคอลัมน์ที่คุณต้องการตรวจสอบ

สูตรจากขั้นตอนที่ 2 จะคัดลอกค่าจากคอลัมน์ที่คุณต้องการตรวจสอบ แต่เฉพาะเมื่อมองเห็นแถว ด้วยวิธีนี้เมื่อตรวจสอบรายการซ้ำคุณจะได้เฉพาะรายการที่ใช้กับตารางที่กรอง ฉันคิดว่าสิ่งนี้อาจไม่ทำงานสำหรับศูนย์ (หรือ "" หรือสิ่งที่คุณเลือกเป็นค่า "else" ในคำสั่ง if ของคุณ) ดังนั้นจึงอาจเป็นไปได้ที่จะได้รับค่าศูนย์บรรทัดในรายการของคุณที่ถูกเน้นว่าซ้ำกัน นอกจากนั้นฉันโชคดีด้วยวิธีนี้


0

ฉันขอเสนอให้ใช้สูตรต่อไปนี้ (ในช่วงเช่น $ A: $ A):

=AND(A1=OFFSET(A1;-1;0);SUBTOTAL(103;OFFSET(A1;-1;0))=1)

มันทำอะไร:

ถ้าทั้งคู่

  1. เซลล์เท่ากับหนึ่งข้างต้น: A1=OFFSET(A1;-1;0)
  2. เซลล์ด้านบนสามารถมองเห็นได้: SUBTOTAL(103;OFFSET(A1;-1;0))=1

ผลลัพธ์จะเป็นจริงดังนั้นเซลล์จึงเป็นเซลล์ที่ซ้ำกันของเซลล์ที่มองเห็นได้ด้านบนและควรเป็นสีเทา

Sidenote: การใช้OFFSETฟังก์ชันทำให้การจัดรูปแบบตามเงื่อนไขจะไม่แตกเมื่อแทรกแถวเพิ่มเติม


-1

นี่คือทางออกที่ฉันเพิ่งใช้:

ฉันสร้างคอลัมน์ใหม่ C (และซ่อนต้นฉบับ (คอลัมน์ B)) ในคอลัมน์ใหม่ฉันใช้สูตร = SUBTOTAL (9, B2) ซึ่งรวมหนึ่งแถวที่คุณสนใจแล้วฉันก็คัดลอกแถวทั้งหมด!

ตอนนี้เมื่อคุณกรองโดยใช้ตัวกรองขั้นสูง ค่าเป็นศูนย์ทั้งหมดในคอลัมน์นี้ยกเว้นว่าจะมองเห็นได้ (ไม่ถูกกรอง)

จากนั้นปกติ = SUMIF () จะทำงานเหมือนแชมป์ อย่าเผลอใช้คอลัมน์ที่ซ่อนไว้เพื่อหาผลรวม หาผลรวมข้ามคอลัมน์ SUBTOTAL () ที่คุณเพิ่งสร้างขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.