เนื้อหา
บางครั้งใช้เวลานานมากในการคิดบางอย่าง แต่เมื่อพวกมันถูกประดิษฐ์ขึ้นแล้ว แท้จริงแล้วพวกมันดูเหมือนชัดเจนและซ้ำซาก จากซีรีส์ "อะไรเป็นไปได้"
จากเวอร์ชันแรกๆ แถบสถานะที่ด้านล่างของหน้าต่าง Microsoft Excel จะแสดงผลรวมสำหรับเซลล์ที่เลือกตามธรรมเนียม:
หากต้องการ คุณยังสามารถคลิกขวาที่ผลลัพธ์เหล่านี้และเลือกจากเมนูบริบทว่าเราต้องการดูฟังก์ชันใด:
และเมื่อไม่นานมานี้ ในการอัปเดตล่าสุดของ Excel นักพัฒนาของ Microsoft ได้เพิ่มฟีเจอร์ที่เรียบง่ายแต่ชาญฉลาด ตอนนี้เมื่อคุณคลิกที่ผลลัพธ์เหล่านี้ ผลลัพธ์เหล่านั้นจะถูกคัดลอกไปยังคลิปบอร์ด!
ความงาม
แต่แล้วผู้ที่ยังไม่มี Excel เวอร์ชันดังกล่าว (หรืออยู่แล้ว?) นี่คือจุดที่มาโครธรรมดาสามารถช่วยได้
การคัดลอกผลรวมของเซลล์ที่เลือกไปยังคลิปบอร์ดโดยใช้แมโคร
เปิดในแท็บ ผู้พัฒนา (ผู้พัฒนา) บรรณาธิการ ของ Visual Basic หรือใช้แป้นพิมพ์ลัดนี้ อื่น ๆ+F11. แทรกโมดูลเปล่าใหม่ผ่านเมนู แทรก – โมดูล และคัดลอกรหัสต่อไปนี้ที่นั่น:
Sub SumSelected() ถ้า TypeName(Selection) <> "Range" จากนั้นออกจาก Sub ด้วย GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) .PutInClipboard สิ้นสุดด้วย End Sub
ตรรกะของมันนั้นง่าย:
- อย่างแรกคือ "การปกป้องจากคนโง่" - เราตรวจสอบสิ่งที่เน้นอย่างชัดเจน หากไม่ได้เลือกเซลล์ (แต่ตัวอย่างเช่น แผนภูมิ) ให้ออกจากมาโคร
- จากนั้นใช้คำสั่ง รับวัตถุ เราสร้างวัตถุข้อมูลใหม่ซึ่งผลรวมของเซลล์ที่เลือกไว้จะถูกเก็บไว้ในภายหลัง อันที่จริงแล้ว รหัสตัวอักษรและตัวเลขที่ยาวและเข้าใจยากคือลิงก์ไปยังสาขารีจิสทรีของ Windows ที่ห้องสมุดตั้งอยู่ ไลบรารีวัตถุ Microsoft Forms 2.0ซึ่งสามารถสร้างวัตถุดังกล่าวได้ บางครั้งเคล็ดลับนี้เรียกว่า มีผลผูกพันล่าช้าโดยปริยาย. หากคุณไม่ได้ใช้คุณจะต้องสร้างลิงค์ไปยังไลบรารีนี้ในไฟล์ผ่านเมนู เครื่องมือ — ข้อมูลอ้างอิง.
- ผลรวมของเซลล์ที่เลือกถือเป็นคำสั่ง แผ่นงานFunction.Sum(Selection)จากนั้นจำนวนผลลัพธ์จะถูกวางไว้บนคลิปบอร์ดด้วยคำสั่ง วางในคลิปบอร์ด
เพื่อความสะดวกในการใช้งาน แน่นอน คุณสามารถกำหนดมาโครนี้ให้กับแป้นพิมพ์ลัดโดยใช้ปุ่ม แมโคร แถบ ผู้พัฒนา (ผู้พัฒนา — มาโคร).
และถ้าคุณต้องการดูว่ามีการคัดลอกอะไรหลังจากเรียกใช้แมโครแล้ว คุณสามารถเปิดแผงคลิปบอร์ดโดยใช้ลูกศรเล็กๆ ที่มุมล่างขวาของกลุ่มที่เกี่ยวข้อง หลัก (บ้าน) แท็บ
ไม่ใช่แค่ปริมาณ
ถ้าคุณต้องการอย่างอื่นนอกเหนือจากจำนวนที่ซ้ำซากจำเจ คุณสามารถใช้ฟังก์ชันใดๆ ที่อ็อบเจกต์ให้เราได้ แผ่นงานFunction:
ตัวอย่างเช่น มี:
- ซำ – ซำ
- ค่าเฉลี่ย – ค่าเฉลี่ยเลขคณิต
- นับ – จำนวนเซลล์ที่มีตัวเลข
- CountA – จำนวนเซลล์ที่เติม
- CountBlank – จำนวนเซลล์ว่าง
- ค่าต่ำสุด – ค่าต่ำสุด
- สูงสุด – ค่าสูงสุด
- ค่ามัธยฐาน – ค่ามัธยฐาน (ค่ากลาง)
- … ฯลฯ
จะเกิดอะไรขึ้นหากแถวหรือคอลัมน์ถูกซ่อน (ด้วยตนเองหรือโดยตัวกรอง) ในช่วงที่เลือก เพื่อที่จะไม่นำมาพิจารณาในผลรวม เราจะต้องแก้ไขโค้ดของเราเล็กน้อยโดยเพิ่มไปที่วัตถุ การเลือก คุณสมบัติ เซลล์พิเศษ (xlCellTypeVisible):
Sub SumVisible() ถ้า TypeName(Selection) <> "Range" จากนั้นออกจาก Sub ด้วย GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCells(xlCellTypeVisible)) PutInClipboard ปิดท้ายด้วย End Sub
ในกรณีนี้ การคำนวณของฟังก์ชันทั้งหมดจะถูกนำไปใช้กับเซลล์ที่มองเห็นได้เท่านั้น
หากคุณต้องการสูตรชีวิต
หากคุณฝันถึง คุณสามารถสร้างสถานการณ์สมมติได้ดีกว่าที่จะคัดลอกไม่ใช่ตัวเลข (ค่าคงที่) แต่เป็นสูตรที่มีชีวิตลงในบัฟเฟอร์ ซึ่งจะคำนวณผลรวมที่เราต้องการสำหรับเซลล์ที่เลือก ในกรณีนี้ คุณจะต้องกาวสูตรจากชิ้นส่วน เพิ่มการลบเครื่องหมายดอลลาร์และแทนที่เครื่องหมายจุลภาค (ซึ่งใช้เป็นตัวคั่นระหว่างที่อยู่ของช่วงที่เลือกหลายช่วงใน VBA) ด้วยเครื่องหมายอัฒภาค:
Sub SumFormula() ถ้า TypeName(Selection) <> "Range" จากนั้นออกจาก Sub ด้วย GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(แทนที่(Selection. ที่อยู่ ",", ";"), "$", "") & ")" .PutInClipboard ลงท้ายด้วย End Sub
ผลรวมพร้อมเงื่อนไขเพิ่มเติม
และสุดท้าย สำหรับผู้ที่คลั่งไคล้อย่างสมบูรณ์ คุณสามารถเขียนมาโครที่จะสรุปเซลล์ที่เลือกทั้งหมดไม่ได้ แต่เฉพาะเซลล์ที่ตรงตามเงื่อนไขที่กำหนดเท่านั้น ตัวอย่างเช่น มาโครจะมีลักษณะเช่นนี้ทำให้ผลรวมของเซลล์ที่เลือกไว้ในบัฟเฟอร์ หากค่าของพวกเขามากกว่า 5 และในขณะเดียวกันก็เติมด้วยสีใดก็ได้:
Sub CustomCalc() Dim myRange As Range ถ้า TypeName(Selection) <> "Range" จากนั้นออกจาก Sub สำหรับแต่ละเซลล์ในการเลือก ถ้า cell.Value > 5 และ cell.Interior.ColorIndex <> xlNone ถ้า myRange ไม่มีอะไร ให้ตั้งค่า myRange = เซลล์อื่น ตั้งค่า myRange = Union(myRange, เซลล์) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) .PutInClipboard End With End Sub
อย่างที่คุณจินตนาการได้ง่ายๆ ว่าเงื่อนไขสามารถกำหนดได้อย่างแน่นอน - ขึ้นอยู่กับรูปแบบเซลล์ - และในปริมาณใด ๆ (รวมถึงโดยการเชื่อมโยงเข้ากับตัวดำเนินการเชิงตรรกะหรือหรือและ) มีพื้นที่มากมายสำหรับจินตนาการ
- แปลงสูตรเป็นค่า (6 วิธี)
- มาโครคืออะไร, ใช้งานอย่างไร, จะแทรกโค้ด Visual Basic ได้ที่ไหน
- ข้อมูลที่เป็นประโยชน์ในแถบสถานะของ Microsoft Excel