Консультация онлайн # 202278

Раздел: Пакет MSOffice
Автор вопроса: DanilaKotov3619 (Посетитель)
Дата: 10.03.2022, 18:35 Консультация неактивна
Поступило ответов: 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Столбцы A, B и C листа Excel (Лист1) заполняются буквами латинского алфавита. Разработайте алгоритм и коды соответствующих функций/процедур для расчета частоты встречаемости буквы из ячейки С3 в каждой заполненной строке и выделите желтым цветом ячейку, в которой встречается буква из ячейки С3. Вычислите количество частоты буквы из C3 и вставте сумму в ячейку E5. В ячейку E6 введите имя столбца, в котором буква из C3 встречается чаще. Столбцы заполняются, начиная со второй строки листа.
Прошу вас, помогите решить эту задачку в вба, нужно +- до 19:30-19:45 по мск, хелп плиз, буду ооочень благодарен! ;)
Вопрос перенесен из раздела JavaScript / VBScript

Ответ # 1, Megaloman (Мастер-Эксперт)

Похоже, решение уже неактуально, но Вы поставили нереальные сроки.
И вопрос задан не совсем по теме - это сфера "Пакет MSOffice"
Но вопрос задан, отвечаю.
Код
Sub Coinside()

    Dim Shr, Cel1, CelN, CelEq, ValEq As String
    Dim OutCount, OutMax, OutName, OutMsg As String
    Dim NCol, iMCount, Col1, TCount, iMax, i As Integer
    Dim R, iR As Range
        
    She = "Лист1"       ' Имя листа
    Cel1 = "A2"         ' Начальная ячейка с данными
    NCol = 3            ' Число колонок с данными
    
    CelEq = "C3"        ' Ячейка с эталонным содержимым
    OutCount = "E5"     ' Ячейка куда поместим количество совпадений с эталонным содержимым
    OutMax = "E6"       ' Ячейка куда поместим имя столбца, в котором эталон встречается чаще
    
    Sheets(She).Select
    
    CelN = Range("A2").End(xlDown).Address
    CelN = Range(CelN).Offset(0, NCol - 1).Address
        
    ValEq = Range(CelEq).Value
    Set R = Range(Cel1 + ":" + CelN)
    
    ReDim MCount(NCol - 1) As Integer
    
    For iMCount = 0 To NCol - 1
        MCount(iMCount) = 0
    Next
    
    Col1 = Range(Cel1).Column
    
    For Each iR In R
        With iR
            If ValEq = .Value Then
                .Interior.Color = 49407
                iMCount = .Column - Col1
                MCount(iMCount) = MCount(iMCount) + 1
            Else
                .Interior.Pattern = xlNone
            End If
        End With
    Next
        
    TCount = 0
    iMax = 0
    
    OutMsg = ""
    For iMCount = 0 To NCol - 1
        TCount = TCount + MCount(iMCount)
        If MCount(iMCount) > MCount(iMax) Then iMax = iMCount
    Next
    Range(OutCount) = TCount
        
    For iMCount = 0 To NCol - 1
        OutName = Range(Cel1).Offset(0, iMCount).Address
        
        For i = 0 To 10
            OutName = Replace(OutName, CStr(i), "")
        Next
        OutName = Replace(OutName, "$", "")

        OutMsg = OutMsg + vbCrLf + "В колонке: """ + OutName + """ найдено: " + vbTab + CStr(MCount(iMCount))
        If MCount(iMCount) = MCount(iMax) Then
            OutMsg = OutMsg + " (максимум)"
            Range(OutMax) = OutName
        End If
    Next
        
    OutMsg = "В ячейке:" + vbTab + vbTab + vbTab + """" + CelEq + """" + vbCrLf + _
        "Имеется значение:" + vbTab + vbTab + """" + ValEq + """" + vbCrLf + vbCrLf + _
        "В диапазоне ячеек: " + vbTab + vbTab + """" + Cel1 + ":" + Replace(CelN, "$", "") + """" + vbCrLf + _
        "Найдено совпадений: " + vbTab + CStr(TCount) + vbCrLf + _
        OutMsg

    MsgBox OutMsg
End Sub


-----
Прикрепленные файлы:


Megaloman

Мастер-Эксперт
11.03.2022, 15:54
5

Мини-форум консультации # 202278

Megaloman

Мастер-Эксперт

ID: 137394

324740

= общий =    10.03.2022, 18:53
Так быстро сегодня не получится. Тем более, задача не очень понятна, как-то путано изложено. Необходимо видеть пример таблицы,
=====
Нет времени на медленные танцы
DanilaKotov3619

Посетитель

ID: 405402

324741

= общий =    10.03.2022, 18:59

жаль, да и примера таблицы нет, это все что дал препод...

=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

324742

= общий =    10.03.2022, 18:59
ой блин, извините, не правильно дал коммент, просто 100 лет уже не заходил на этот сайт и забыл, как это делается
=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

324743

= общий =    10.03.2022, 19:16
P.S планы меняются, нужно уже не до 8, а до 9 вечера по мск, прошу хелп, кто шарит(((
=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

324744

= общий =    10.03.2022, 19:27
Это все что есть, если что у меня 13 вар...

-----
Прикрепленные файлы:

=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

324794

= общий =    13.03.2022, 21:41
Добрый вечер! Огромное вам спасибо за помощь, жаль только она меня уже не спасет от пересдачи smile
Можно как-нибудь связаться с вами в соц сетях, том же вк или тг?
Мне еще ооочень пригодиться ваша помощь в будущем, и готов даже благодарить за нее денюжкой, если что я в вк/тг @garant_infoblog - везде один юзер.
+37376071928 - whatsapp ;)
=====
Kotov3619
Megaloman

Мастер-Эксперт

ID: 137394

324795

= общий =    13.03.2022, 23:12
Рад помочь в будущем. Размещайте вопросы на форуме, это повысит вероятность ответа и другими участниками. И рассчитывайте сроки: в конкретной ситуации за 2 часа да еще на ночь глядя вряд ли кто-нибудь смог бы сделать задание такого объема в VBA.
Задача, похоже, решается и без VBA формулами, и тогда сроки были бы реальнее.
Ваше спасибо вполне достаточно.
=====
Нет времени на медленные танцы
DanilaKotov3619

Посетитель

ID: 405402

324796

= общий =    13.03.2022, 23:32

Рад помочь в будущем. Размещайте вопросы на форуме, это повысит вероятность ответа и другими участниками. И рассчитывайте сроки: в конкретной ситуации за 2 часа да еще на ночь глядя вряд ли кто-нибудь смог бы сделать задание такого объема в VBA.
Задача, похоже, решается и без VBA формулами, и тогда сроки были бы реальнее.
Ваше спасибо вполне достаточно.

Я без проблем могу, как на форум так и вам в лс, просто такой срок был т.к у меня тогда аттестация была по этому предмету, и мне на эту задачку дали всего каких то несчастных 3 часа, поэтому придется пойти на пересдачу, да она решается и без VBA, но у меня просто такой предмет, и препод не принимает без кода smile и хотелось бы свами связаться как-нибудь за день до пересдачи (
=====
Kotov3619
DanilaKotov3619

Посетитель

ID: 405402

324860

= общий =    15.03.2022, 17:04
Здравствуйте! Вы в дискретной математике случайно не разбираетесь?
=====
Kotov3619
Megaloman

Мастер-Эксперт

ID: 137394

324861

= общий =    15.03.2022, 17:07
Нет
=====
Нет времени на медленные танцы
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.