คัดลอกผลรวมของเซลล์ที่เลือกไปยังคลิปบอร์ด

บางครั้งใช้เวลานานมากในการคิดบางอย่าง แต่เมื่อพวกมันถูกประดิษฐ์ขึ้นแล้ว แท้จริงแล้วพวกมันดูเหมือนชัดเจนและซ้ำซาก จากซีรีส์ "อะไรเป็นไปได้"

จากเวอร์ชันแรกๆ แถบสถานะที่ด้านล่างของหน้าต่าง 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

เขียนความเห็น