Tanlangan katakchalar yig‘indisini vaqtinchalik xotiraga nusxalash

Ba'zida ba'zi narsalarni o'ylab topish juda uzoq vaqt talab etadi. Ammo ular allaqachon ixtiro qilinganida, ular aniq va hatto oddiy ko'rinadi. "Nima, bu mumkin edi?" Serialidan.

Dastlabki versiyalardan boshlab Microsoft Excel oynasining pastki qismidagi holat satri an'anaviy ravishda tanlangan hujayralar uchun jami ko'rsatib turardi:

Tanlangan katakchalar yig‘indisini vaqtinchalik xotiraga nusxalash

Agar so'ralsa, ushbu natijalarni sichqonchaning o'ng tugmasi bilan bosish va kontekst menyusidan aniq qaysi funktsiyalarni ko'rishni tanlash mumkin edi:

Tanlangan katakchalar yig‘indisini vaqtinchalik xotiraga nusxalash

Va yaqinda, so'nggi Excel yangilanishlarida Microsoft dasturchilari oddiy, ammo aqlli xususiyatni qo'shdilar - endi siz ushbu natijalarni bosganingizda, ular vaqtinchalik xotiraga ko'chiriladi!

Tanlangan katakchalar yig‘indisini vaqtinchalik xotiraga nusxalash

Go'zallik. 

Ammo hali (yoki allaqachon?) Excelning bunday versiyasiga ega bo'lmaganlar haqida nima deyish mumkin? Bu erda oddiy makroslar yordam berishi mumkin.

Makros yordamida tanlangan katakchalar yig'indisini almashish buferiga nusxalash

Yorliqda oching dasturchi (ishlab chiquvchi) muharrir Visual Basic yoki ushbu klaviatura yorlig'idan foydalaning Alt+F11. Menyu orqali yangi bo'sh modulni joylashtiring Qo'shish - modul va u erda quyidagi kodni nusxalash:

Sub SumSelected() Agar TypeName(Selection) <> "Range" bo'lsa, GetObject bilan Subdan chiqing("Yangi:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) EnPd EnPd.  

Uning mantig'i oddiy:

  • Avval "ahmoqlardan himoya" keladi - biz aniq nima ta'kidlanganligini tekshiramiz. Agar hujayralar tanlanmagan bo'lsa (lekin, masalan, diagramma), so'ldan chiqing.
  • Keyin buyruq yordamida Getobject biz tanlangan hujayralar yig'indisi keyinroq saqlanadigan yangi ma'lumotlar ob'ektini yaratamiz. Uzoq va tushunarsiz harf-raqamli kod, aslida, kutubxona joylashgan Windows ro'yxatga olish kitobi bo'limiga havoladir. Microsoft Forms 2.0 ob'ektlar kutubxonasi, bunday ob'ektlarni yaratishi mumkin. Ba'zan bu hiyla ham deyiladi yashirin kechikish. Agar siz undan foydalanmasangiz, menyu orqali fayldagi ushbu kutubxonaga havola qilishingiz kerak bo'ladi Asboblar - Ma'lumotnomalar.
  • Tanlangan kataklarning yig'indisi buyruq hisoblanadi WorksheetFunction.Sum(tanlov), va keyin hosil bo'lgan miqdor buyruq bilan buferga joylashtiriladi PutInClipboard

Foydalanish qulayligi uchun, albatta, tugma yordamida ushbu makrosni klaviatura yorlig'iga belgilashingiz mumkin macros tab dasturchi (Dasturchi — Makroslar).

Va agar siz so'lni ishga tushirgandan so'ng aynan nima nusxalanganligini ko'rishni istasangiz, tegishli guruhning pastki o'ng burchagidagi kichik o'q yordamida Bufer panelini yoqishingiz mumkin. Asosiy (Uy) yorlig'i:

Tanlangan katakchalar yig‘indisini vaqtinchalik xotiraga nusxalash

Faqat miqdori emas

Agar siz oddiy miqdorga qo'shimcha ravishda boshqa narsani xohlasangiz, ob'ekt bizga taqdim etadigan har qanday funktsiyalardan foydalanishingiz mumkin. Ish varag'i funktsiyasi:

Tanlangan katakchalar yig‘indisini vaqtinchalik xotiraga nusxalash

Masalan, bor:

  • Yig'indi - yig'indisi
  • O'rtacha - arifmetik o'rtacha
  • Hisob - raqamlari bo'lgan hujayralar soni
  • CountA - to'ldirilgan hujayralar soni
  • CountBlank - bo'sh katakchalar soni
  • Min - minimal qiymat
  • Maks - maksimal qiymat
  • Median - median (markaziy qiymat)
  • … va boshqalar.

Filtrlar va yashirin qator ustunlar, shu jumladan

Agar qatorlar yoki ustunlar tanlangan diapazonda yashiringan bo'lsa (qo'lda yoki filtr orqali) nima qilish kerak? Ularni jami hisobda hisobga olmaslik uchun ob'ektga qo'shish orqali kodimizni biroz o'zgartirishimiz kerak bo'ladi. tanlash mulk Maxsus hujayralar (xlCellTypeVisible):

Sub SumVisible() Agar TypeName(Selection) <> "Range" bo'lsa, Sub-dan GetObject bilan chiqing("Yangi:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.Sellction.Visible)VCialCisible.Spe. PutInClipboard End Sub bilan tugaydi  

Bunday holda, har qanday umumiy funktsiyani hisoblash faqat ko'rinadigan hujayralarga qo'llaniladi.

Agar sizga tirik formula kerak bo'lsa

Agar siz tush ko'rsangiz, tanlangan katakchalar uchun kerakli summalarni hisoblaydigan buferga raqamni (doimiy) emas, balki tirik formulani nusxalash yaxshiroq bo'lgan stsenariylarni topishingiz mumkin. Bunday holda, siz formulani bo'laklardan yopishtirishingiz, unga dollar belgilarini olib tashlashingiz va vergulni (VBA-da bir nechta tanlangan diapazonlar manzillari orasidagi ajratuvchi sifatida ishlatiladi) nuqta-vergul bilan almashtirishingiz kerak bo'ladi:

Sub SumFormula() Agar TypeName(Selection) <> "Range" bo'lsa, Sub-dan GetObject bilan chiqing("Yangi:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=SUMM(" & Replace(Almashtirish(tanlash.). Manzil, ",", ";"), "$", "") & ")" .PutInClipboard End with End Sub  

Qo'shimcha shartlar bilan yig'ish

Va nihoyat, butunlay manyaklar uchun siz barcha tanlangan hujayralarni emas, balki faqat berilgan shartlarni qondiradiganlarni jamlaydigan so'l yozishingiz mumkin. Shunday qilib, masalan, makro tanlangan kataklarning yig'indisini Buferga qo'yadi, agar ularning qiymatlari 5 dan katta bo'lsa va ayni paytda ular istalgan rang bilan to'ldirilgan bo'lsa:

 Sub CustomCalc() myRange-ni diapazon sifatida xiralashtiring, agar TypeName(Selection) <> "Range" Agar cell.Value > 5 va cell.Interior.ColorIndex <> xlNone Tanlangan har bir katak uchun Subdan chiqing, agar myRange hech narsa bo‘lmasa, myRange ni o‘rnating = cell Else myRange = Union(myRange, cell) End If End If Next yacheyka GetObject bilan ("Yangi:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange)EndC bilan belgilang.  

Osonlik bilan tasavvur qilganingizdek, shartlar mutlaqo istalgan - hujayra formatigacha - va har qanday miqdorda (jumladan, ularni mantiqiy operatorlar yoki yoki va bilan bog'lash orqali) o'rnatilishi mumkin. Tasavvur qilish uchun juda ko'p joy mavjud.

  • Formulalarni qiymatlarga aylantirish (6 usul)
  • Makroslar nima, ulardan qanday foydalanish kerak, Visual Basic kodini qayerga kiritish kerak
  • Microsoft Excel holati panelidagi foydali ma'lumotlar

Leave a Reply