среда, 23 мая 2018 г.

MS Excelда VBA ёрдамида уз формуласини ёзиш. (2-дарс)

Ушбу линкда 1-дарс булиб утган эди.
Энди эса, тайёр, амалда куп кулланиладиган, Excelни узида йук, лекин керак формулалар учун кодлар мисолини куриб утамиз:

1.сцепить функциясининг бироз "кулайлаштирилган" тури. Масалан бир неча (15 та, масалан) катакдаги маълумотни орасида вергул билан ёзиб чикиш керак. Унинг учун бизга узун формула ёзишга тугри келади: СЦЕПИТЬ(C2;", ";C3;", ";C4;", ";C5;", ";..... каби.
Шунака пайтда сцепитьдиапазон(C2:C1000;", ") деган формула булса, анча киска ва осонрок булади. Ва вакт хам тежалади.
Шу формулани коди:


Public Function СЦЕПИТЬДИАПАЗОН(ByRef ДИАПАЗОН As Excel.Range, Optional ByVal РАЗДЕЛИТЕЛЬ As String = "") As String

    Dim rCell As Range
    Dim MergeText As String

    For Each rCell In ДИАПАЗОН
        If rCell.Text <> "" Then
            MergeText = MergeText & РАЗДЕЛИТЕЛЬ & rCell.Text
        End If
    Next

    MergeText = Mid(MergeText, Len(РАЗДЕЛИТЕЛЬ) + 1)
    СЦЕПИТЬДИАПАЗОН = MergeText
End Function


2.Аник бир символни санаш формуласи

Масалан, суздаги пробелларни санаш:

Function СЧЁТСИМВЛ(ТЕКСТ As String, СИМВОЛ As String) As Long
    Dim i As Long
    Dim S As Long

    S = 0
    For i = 1 To Len(ТЕКСТ)
        If СИМВОЛ = Mid(ТЕКСТ, i, 1) Then S = S + 1
    Next

    СЧЁТСИМВЛ = S
End Function



3.Катакдаги рангларга кура санаш.  Катакларга ранг бериш жадвални укишни, тушунишни осонлаштиради, Баъзан, рангга кура катаклардаги маълумотларни хисоблашга тугри келади.

Excelда бунинг учун стандарт формула йук, ва буни хам тайёр функциядан фойдаланган холда амалга оширамиз:

Формулага тушунтириш

Функция =СУММЗАЛИВКА(ДИАПАЗОН; ЯЧЕЙКА). Функциянинг кисмлари:
  • ДИАПАЗОН - суммаси чикарилиши керак булган диапазон.
  • ЯЧЕЙКА - маълум (бизга керак) рангга эга катак.
Если вы забыли синтаксис данной функции, вы всегда сможете вызвать формулу из выпадающего списка функций в надстройке.
Диккат: Формулаларнинг автоматик хисобланиши, катак ранггига Excelда боглик булмаганлиги сабаб, формула ёзилгандан кейинги ранг узгаришларидан сунг, албатта, CTRL+ALT+F9 комбинацияли тугмаларни босиш шарт!

Формуланинг коди:

Public Function СУММЗАЛИВКА(ДИАПАЗОН As Range, ЯЧЕЙКА) As Double
    Dim S As Double
    Dim rCell As Range
    Dim ColCell As Long
 
    ColCell = ЯЧЕЙКА.Interior.Color
    S = 0
 
    For Each rCell In ДИАПАЗОН
        If rCell.Interior.Color = ColCell Then
            S = S + rCell.Value
        End If
    Next
 
    СУММЗАЛИВКА = S
End Function


4

Катакдаги ёзувнинг рангини аниклаш.

Бу ерда хам Ctrl+Alt+F9 тугмаларини босиш оркали хисоблаш керак булади.

Бу нимага керак? Маълум рангга кура "сортировка" (тартиблаш) учун. Ёки рангни ён устунга ёздириб булгач, "суммеслимн", "счётеслимн" ва хоказо формулалар оркали бошка операцияларни бажариш имконияти булиши учун.

VBA Коди:

Public Function ЦВЕТШРИФТА(ЯЧЕЙКА As Range) As Double 
    ЦВЕТШРИФТА = ЯЧЕЙКА.Font.Color
End Function


Ушбу тайёр кодни кучириб олиш учун тайёр модулни шу жойга куйдим:
 https://cloud.mail.ru/public/9GKB/94Z9KoT4f (учиб кетмасдан олдин юклаш керак)

Комментариев нет:

Отправить комментарий

кабул килинди

Excelдаги яна иккита функция (формула) VBA оркали: 1.PDF сахифалари сонини аниклаш. 2.Файлларни жойини кучириш (Move, Переместить)

1.PDF Файли сахифалари сонини чикариш. Мана шу функцияни модулга жойлаштирсак формуламиз PDF файл ичидаги сахифалар сонини чикариб бериши...