ซ่อนป้ายชื่อข้อมูลที่มีชื่อซีรี่ส์หากค่าเป็นศูนย์


5

ฉันสร้างแผนภูมิใน excel ที่ฉันต้องการซ่อน data label หากค่าเป็นศูนย์ สำหรับเลเบลข้อมูลที่มีค่าตัวเองสามารถทำได้โดยใช้การกำหนดรูปแบบตามที่อธิบายไว้ที่นี่ ฉันจะซ่อนป้ายชื่อข้อมูล 0 ค่าในแผนภูมิ Excel ได้อย่างไร .

อย่างไรก็ตามวิธีนี้ใช้ไม่ได้หากป้ายข้อมูลไม่มีค่าตัวเอง แต่เป็นชื่อชุด มีวิธีซ่อนฉลากข้อมูลที่มีชื่อซีรี่ส์หรือไม่ถ้าค่าเป็นศูนย์?

คำตอบ:


3

ฉันคิดว่านี่ตกอยู่ในโลกของ VBA กำลังทำงาน รายบุคคล ป้ายข้อมูลค่อนข้าง จำกัด

นี่คือรหัสที่จะวนซ้ำในชุดข้อมูลในแผนภูมิจุดข้อมูลของพวกเขาแล้วลบป้ายกำกับที่ตรงกับจุดด้วย Value=0.

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

แก้ไข: เพิ่มในลูปด้านนอกบน ActiveSheet.ChartObjects เพื่อประมวลผลแผนภูมิทั้งหมดบนแผ่นงาน

Sub RemoveZeroValueDataLabel()

    'runs through every chart on the ActiveSheet
    Dim cht As Chart
    Dim chtObj As ChartObject

    For Each chtObj In ActiveSheet.ChartObjects
        Set cht = chtObj.Chart

        Dim ser As Series
        For Each ser In cht.SeriesCollection

            Dim vals As Variant
            vals = ser.Values

            'include this line if you want to reestablish labels before deleting
            ser.ApplyDataLabels xlDataLabelsShowLabel, , , , True, False, False, False, False

            'loop through values and delete 0-value labels
            Dim i As Integer
            For i = LBound(vals) To UBound(vals)
                If vals(i) = 0 Then
                    With ser.Points(i)
                        If .HasDataLabel Then
                            .DataLabel.Delete
                        End If
                    End With
                End If
            Next i
        Next ser
    Next chtObj
End Sub

คำตอบนี้คว้า Values จาก Series ใช้เทคนิค รายละเอียดที่นี่ .

นี่คือผลลัพธ์ของข้อมูลสุ่มบางตัวที่มีแถบค่า 0 คู่ถูกลบป้ายข้อมูล

chart with labels deleted


Wow Bryon คุณช่วยได้มาก! ขอบคุณมาก!!
WhoKnows19

เขาไบรอันฉันต้องการเรียกใช้สคริปต์ข้างต้นสำหรับกราฟทุกแผ่นในแผ่นงานนั้น ฉันไม่ได้มีประสบการณ์กับ VBA แต่ฉันใช้บรรทัดต่อไปนี้ในรหัสของคุณ: สำหรับแต่ละแผ่น cht In ("แผ่นงาน") แผนภูมิเหมือนที่อธิบายไว้ที่นี่ thespreadsheetguru.com/the-code-vault/2014/8/15/... . อย่างไรก็ตามสิ่งนี้จะส่งคืนข้อผิดพลาดที่บอกว่าไม่สามารถทำได้กับวัตถุนั้น คำถามของฉันคือรหัสที่คุณเสนอสามารถใช้ในการ for loop ได้หรือไม่? และถ้าเป็นเช่นนั้นได้อย่างไร
WhoKnows19

ดูการแก้ไขด้านบน คุณต้องวนซ้ำ Worksheet.ChartObjects. ChartObject เป็นคอนเทนเนอร์ที่มีข้อมูลเกี่ยวกับแผนภูมิและวิธีการจัดเรียงบน Worksheet. ข้างใน ChartObject คือ Chart สถานที่ซึ่งทำให้เรากลับไปที่จุดเดิมเหมือนก่อน ดู msdn.microsoft.com/en-us/library/office/ff838184.aspx
Byron Wall

ไบรอันอีกครั้งขอบคุณมากงานนี้และช่วยฉันได้มากเวลา! ยังไม่คุ้นเคยกับ VBA (แต่) แต่หวังว่าจะดีขึ้นในอนาคตดังนั้นฉันจึงไม่ต้องถามคำถามเหล่านี้
WhoKnows19

วิธีที่เร็วที่สุดในการเรียนรู้คือการบันทึกมาโครและทำให้ดีขึ้น คุณจะได้รับสิ่งที่ดีกว่ามากเช่นกันถ้าคุณประกาศตัวแปรเสมอ: Dim sht as Worksheet, rng as Range, ... etc.. สิ่งนี้จะแจ้งให้ Intellisense แสดงรายการคุณสมบัติตามที่คุณไป นอกจากนี้มันยังบังคับให้คุณรู้ว่าคุณกำลังพยายามทำอะไรแทนที่จะทำแค่หยิบตัวแปรและหวังว่ามันจะได้ผล
Byron Wall

0

คุณสามารถลบ 0 ทั้งหมดของคุณ (ค้นหาและแทนที่เพื่อแทนที่ 0s ทั้งหมดของคุณด้วยช่องว่างที่ตรงกับเนื้อหาเซลล์ทั้งหมด ="" ไม่ทำงาน)

enter image description here


สวัสดี selwyth ขอบคุณ !! นี่เป็นการแก้ปัญหาอย่างแน่นอน อย่างไรก็ตามข้อมูลต้นฉบับเป็นสูตรที่ถูกแทนที่แล้ว ฉันต้องทำกราฟเหล่านี้ทุกเดือนดังนั้นฉันจะต้องเรียกคืนสูตรเหล่านี้ทุกเดือนด้วย เนื่องจากเป็นกราฟที่ต่างกันประมาณสิบกราฟฉันจึงต้องการลดปริมาณการใช้แรงงานด้วยตนเอง รหัส VBA ที่เสนอโดย Bryon จะทำงานเพื่อเป้าหมายนี้ ขอบคุณมากเคล็ดลับอีกประการหนึ่งที่ฉันสามารถเพิ่มลงในกล่องเครื่องมือ excel ของฉันได้ :)
WhoKnows19

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