Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?, как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?
 
Kuzmich, добрый день!
подпрограмма, что-то не заработала в таком виде и не добирается до  кода Cells(n, "B") = iSumma
соответственно , ничего и не записывается в ячейки.

может проще поступить?  и использовать If Cells(i + 1, "A") <> "" Then
или  If Not IsEmpty(Cells(i, "A")) Then , но после проверки на наличие цвета в ячейке.

Код ниже работает...

Код
Sub Sub Get_Kol_iRow()Dim i As LongDim iLastRow As LongDim iSummaDim iColIndex As LongDim n As IntegeriLastRow = Cells(Rows.Count, "A").End(xlUp).RowiColIndex = Cells(4, "A").Interior.ColorIndex      iSumma = 0      n = 1  For i = 1 To iLastRow    If Cells(i + 1, "A").Interior.ColorIndex <> iColIndex Then      If Cells(i + 1, "A") <> "" Then         iSumma = iSumma + 1      End If    Else      Cells(n, "D") = iSumma      iSumma = 0      n = i + 1    End If  Next MsgBox ("Выполнено")

Код
End Sub 
Как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?, как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?
 
Ігор Гончаренко, добрый день!  
насчет - у вас в примере в группах ячеек все В и С пустые - результат везде 0.....
я с примера перешел в рабочий файл, который содержит более 10 000 строк и море колонок.
и работаю сразу с ним, поэтому появились колонки B и С ....
Как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?, как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?
 
Ігор Гончаренко,  ваша логика понятна. думаю, что можно упростить, если считать непустые строки целиком, а проверять строку вместе с колонкой, например, если в строке N,  колонка В и С пустые, то далее можно и не проверять.
Тогда все проще получается.  
Как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?, как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?
 
Ігор Гончаренко, добрый день!  Спасибо!  Все считает и красиво работает.
Подскажите, как в этом методе не считать пустые строчки , которые есть столбце, практически в каждой группе?
Как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?, как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?
 
Kuzmich, добрый день!  спасибо, код работает, все считает правильно.
Внес небольшую коррекцию кода, так как в столбце оказались пустые строки, которые считать не нужно.
Видимо из-за пустой строки и не считалось ко-во строк в самом конце файла. (последняя группа между двумя "цветными ячейками")

-------------------
пустая строка
Итого
 
Как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?, как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?
 
Цитата
написал:
Вариант решения без макроса.
Делаем фильтр по цветку заливки. Ставим в соседнем столбец 1 и протягиваем вниз. В итоге рядом с каждой серой ячейкой будет стоять единичка. Добавляем еще один столбец и рядом с первой единичкой ставим формулу ПОИСКПОЗ с плавающим началом (см. файл). Она и выводит количество строк. Также делаем фильтр по серым ячейкам или единичкам и протягиваем эту формулу вниз.Алексей Ш
Цитата
написал:
Вариант решения без макроса.
Делаем фильтр по цветку заливки. Ставим в соседнем столбец 1 и протягиваем вниз. В итоге рядом с каждой серой ячейкой будет стоять единичка. Добавляем еще один столбец и рядом с первой единичкой ставим формулу ПОИСКПОЗ с плавающим началом (см. файл). Она и выводит количество строк. Также делаем фильтр по серым ячейкам или единичкам и протягиваем эту формулу вниз.
=ПОИСКПОЗ(1;B5:B13892;0)-1   - в реальном фале выдает  Н/Д
Как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?, как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?
 
Спасибо!  Красиво!  Все работает.
Вообще файл с примером сильно упрощен,  в реальном море колонок и вставлять промежуточные столбцы будет не всегда удобно.
Поэтому придется все равно искать вариант с макросом (VBA) решением.
Как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?, как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?
 
Добрый день! Подскажите, как макросом или кодом VBA посчитать в Эксель-столбце кол-во записей(строк) между выделенными цветом строками?
В столбце ряд строк выделен серым цветом. Нужно найти эти выделенные цветом строки и посчитать между ними кол-во записей(строк).
И сумму строк записывать в "верхнюю" строку из каждой пары выделенных строк.
Как в файле примере.
Спасибо.
Нужен актуальный вариант функции "СУММА ПРОПИСЬЮ", Нужен актуальный вариант функции "СУММА ПРОПИСЬЮ"
 
от Игоря Гончаренко функцию сумма прописью не нашел.  Нашел аналогичную функцию от Владимира Яркова. (может кому пригодится.)
Ссылка с примером:  http://www.excelworld.ru/board/vba/udf/sum_in_words/8-1-0-52
Код
[/CODE][CODE]
'Сумма Прописью по Владимиру Яркову (короткая)
'Владимир Ярков
'Функция вывода суммы прописью в рублях и цифрами в копейках
'синтаксис: fSUMprop(число[,вариант])
'знак числа не учитывается
'первый аргумент - число (Variant) до 10 триллионов
'второй аргумент =0 - возвращает сумму с первой прописной,
'                     остальные - строчными буквами
'               <>0 возвращает сумму строчными буквами
Public Function fSUMprop(xsu As Variant, Optional mb As Byte) As String
On Error GoTo ersupr
If Not IsNumeric(xsu) Then
    fSUMprop = ""
    Exit Function
End If
If xsu >= 10000000000000# Then
    fSUMprop = "слишком большое число"
    Exit Function
End If
Dim ssu As String, nsu, edi, des, sot, ind As Byte, i As Integer
If Fix(xsu) = 0 Then
    fSUMprop = "ноль рублей "
Else
    ssu = Mid$(str$(Fix(xsu)), 2)    ' строка рублей без знака
    nsu = (Len(ssu) + 2) \ 3         ' количество троек цифр
    ssu = Right$("00", nsu * 3 - Len(ssu)) + ssu    ' добавляем нулями
    For i = nsu To 1 Step -1
        sot = Val(Mid$(ssu, (nsu - i) * 3 + 1, 1))    ' сотни
        des = Val(Mid$(ssu, (nsu - i) * 3 + 2, 1))    ' десятки
        edi = Val(Mid$(ssu, (nsu - i) * 3 + 3, 1))    ' единицы
        If sot + des + edi > 0 Or i = 1 Then
            If sot > 0 Then
                fSUMprop = fSUMprop + Choose(sot, "сто", "двести", "триста", _
                                             "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", _
                                             "девятьсот") + " "
            End If
            If des = 1 Then
                fSUMprop = fSUMprop + Choose(edi + 1, "десять", "одиннадцать", _
                                             "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", _
                                             "семнадцать", "восемнадцать", "девятнадцать") + " "
                ind = 3
            Else
                If des <> 0 Then
                    fSUMprop = fSUMprop + Choose(des - 1, "двадцать", _
                                                 "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", _
                                                 "девяносто") + " "
                End If
                If edi <> 0 Then    ' вычисляем индекс для тысяч (одна,две)
                    If i = 2 And (edi = 1 Or edi = 2) Then
                        ind = 9
                    Else
                        ind = 0
                    End If
                    fSUMprop = fSUMprop + Choose(edi + ind, "один", "два", _
                                                 "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", "одна", _
                                                 "две") + " "
                End If
                Select Case edi
                    Case 1
                        ind = 1
                    Case 2, 3, 4
                        ind = 2
                    Case Else
                        ind = 3
                End Select
            End If
            fSUMprop = fSUMprop + Choose((i - 1) * 3 + ind, "рубль", "рубля", _
                                         "рублей", "тысяча", "тысячи", "тысяч", "миллион", "миллиона", "миллионов", _
                                         "миллиард", "миллиарда", "миллиардов", "триллион", "триллиона", _
                                         "триллионов") + " "
        End If
    Next i
End If
ssu = Right$(Format$(xsu, "0.00"), 2)
des = Val(Left$(ssu, 1))
edi = Val(Right$(ssu, 1))
If des = 1 Then
    ind = 3
Else
    Select Case edi
        Case 1
            ind = 1
        Case 2, 3, 4
            ind = 2
        Case Else
            ind = 3
    End Select
End If
fSUMprop = fSUMprop + ssu + Choose(ind, " копейка", " копейки", " копеек")
If mb = 0 Then
    fSUMprop = UCase$(Left$(fSUMprop, 1)) + Mid$(fSUMprop, 2)
End If
Exit Function
ersupr:
fSUMprop = "ошибка"
End Function
Изменено: YGrigor18 - 15.06.2022 11:44:37
Нужен актуальный вариант функции "СУММА ПРОПИСЬЮ", Нужен актуальный вариант функции "СУММА ПРОПИСЬЮ"
 
Сам автор Николай Павлов вносил коррекцию в представленный первоначальный код  - по результатам общения на форуме.
но на сайте остался первоначальный вариант.

Поэтому и спросил, что может есть доработанный вариант?, с учетом пожеланий пользователей форума,  так как время прошло и  этого исключать нельзя.
Нужен актуальный вариант функции "СУММА ПРОПИСЬЮ", Нужен актуальный вариант функции "СУММА ПРОПИСЬЮ"
 
Добрый день!  Нашел на форуме 2012 года функцию написание числа ПРОПИСЬЮ.  (Автор Николай Павлов.)
Но там шли обсуждения, вносились какие-то изменения в код. И в итоге на форуме остался старый вариант.
https://www.planetaexcel.ru/techniques/7/46/#1620


Где бы найти актуальную функцию СУММА ПРОПИСЬЮ с  Исправлениями?
Спасибо.
Нужен календарь в Excel 2019, чтобы можно было использовать как объект в VBA
 
Спасибо,
вопрос- насколько легитимно это можно использовать, ведь это чьи-то разработки?
Нужен календарь в Excel 2019, чтобы можно было использовать как объект в VBA
 
Добрый день форумчане!

подскажите, пожалуйста, есть ли календарь в Excel 2019 ?
Чтобы его  можно было использовать в коде VBA и загружать календарь на форму с панели ToolBox.
Поиск на форумах результатов  не дал. В других, более ранних версиях офиса, такой календарь был.
На другом форуме посоветовали вытащить из Additional Controls  компонент Microsoft MonthView Control
и далее в CheckListBox. Но это все есть в Excel 2013, а в 2019 к сожалению, отсутствует.
Есть ли идеи?

Спасибо.
Изменено: vikttur - 02.07.2021 23:46:18
Подскажите, как можно в VBA использовать переменные в диапазоне функции Range ?
 
Спасибо за помощь,  строка работает.
Остался один момент ...
Есть в VLOOKUP  фрагмент, где указывается  Range(Cells(7, 4), Cells(7, 4)
Нужно ли прописать в полном формате (книга, лист), откуда взяты эти ячейки?
И как, по аналогии ?
Код
Rezult3 = WorksheetFunction.VLookup(Range(Cells(7, 4), Cells(7, 4)), _
 Workbooks("bill.xlsx").Sheets("Phone").Range("$A2:$D$61"), 4, 0)
 With Workbooks("bill.xlsx").Sheets("Phone")
   Rezult3 = WorksheetFunction.VLookup(Range(Cells(7, 4), Cells(7, 4)), _
   .Range(.Cells(2, 1), .Cells(61, 4)), 4, 0)
 End With
Изменено: vikttur - 26.06.2021 00:16:30
Подскажите, как можно в VBA использовать переменные в диапазоне функции Range ?
 
Подскажите, как можно в VBA использовать переменные в диапазоне функции Range ?
Например, выражение 1 работает корректно.
Код
1). Range(Cells(1, 10), Cells(1, 10)).Value = 300
Далее вместо Cell (1,10) хотел бы использовать Cell (I,K) ....
Код
Пытаюсь по аналогии заменить Range("$A2:$D$61") на Range(Cells(2, 1), Cells(61, 4)) - вылетает ошибка 1004
Применяю совместно с LOOKUP. Выражение 2 работает корректно, выражение 3 с ошибкой 1004.
Код
2). Rezult3 = WorksheetFunction.VLookup(Range(Cells(7, 4), Cells(7, 4)), Workbooks("bill.xlsx").Sheets("Phone").Range("$A2:$D$61"), 4, 0)
Код
3). Rezult3 = WorksheetFunction.VLookup(Range(Cells(7, 4), Cells(7, 4)), Workbooks("bill.xlsx").Sheets("Phone").Range(Cells(2, 1), Cells(61, 4)), 4, 0)
При этом доступ к файлу и листу есть.
Код
Workbooks.Open "D:\Test\Bill.xlsx"
ActiveSheet.Name = "Phone"
Может есть какие идеи?
Спасибо!
Изменено: YGrigor18 - 22.06.2021 10:19:26 (получил замечание)
Повторяющиеся значения в Условном форматировании ("некорректность" отображения данных), Повторяющиеся значения в Условном форматировании ("некорректность" отображения данных)
 
спасибо!
и извините, какой пример для форума был бы правильный?
Повторяющиеся значения в Условном форматировании ("некорректность" отображения данных), Повторяющиеся значения в Условном форматировании ("некорректность" отображения данных)
 
Добрый день, помогите советом!
Ищу повторяющиеся значения Условным форматированием.
Столкнулся с тем, что там, где есть в ячейке символ "*"  звездочка,  там неправильно определяются эти повторяющиеся значения.
Возможно и правильно, но не совсем понятно как?

Пример:  

1. ABC (ABC)-J 3*6 0,66

2. ABC (ABC)-J 3*16 0,66

первое значение определяется как повторяющееся.
а второе значение в обратную сторону повторяющимся не считается.
Заменяешь символ "*"  на другой, все работает корректно.
Получается, что часть строки после звездочки как то обрабатывается, а вот как не понятно.
Спасибо.  
Поискув строке по нескольким условиям
 
Спасибо! Идею понял,  проверю как работает - отпишусь
Поискув строке по нескольким условиям
 
Добрый день,
Кто подскажет приемы по поиску в строке - по нескольким условиям одновременно...

если кратко, то в формуле  при не выполнении  одного из условий в функции ПОИСК или в  функции ЕСЛИ, генерится ошибка и результат всей формулы  также ошибка..  перехват  функцией ЕСЛИОШИБКА результата нужного не приносит ..

Например,  есть строки в колонке A,  ячейках A1, A2, ....A15000
АВВГ 3х4 мс(N, PE)-0.66
АВВГ 3х4 мк(N, PE)-1
................
.................

Нужна формула-
если в ячейке в строке   есть "мк" или "мс",  в ячейку колонки "В" нужно записать слово - "многожильный".
если в ячейке есть "ок"- нужно в ячейку колонки "В" записать слово -  "одножильный".
если в строке нет - "мк", "мс", "ок",  то нужно в ячейку колонки "В" записать слово "ошибка".

Использую функции  ЕСЛИ , ПОИСК, ЕСЛИОШИБКА

=ИЛИ(ПОИСК("мк";"A1"; 1);ПОИСК("мс";"A1"; 1))
 выдаст ошибку,  потому как одновременно в строке может быть или мк или мс.
результат #знач!

использование вложенных ЕСЛИ(ПОИСК("мк";"A1"; 1);"многожильный"; ЕСЛИ (ПОИСК("мс";"A1"; 1);"многожильный";"")
также результата нужного не приносит...
а ведь еще нужно добавить несколько вложений для поиска "ок"...и анализ отсутствия в строке "мк", "мс","ок"
Проблема в том, что в каждой строке выполняется корректно поиск только по одному из условий поиска.

кто подскажет идеи как корректно можно реализовать одновременный поиск в строке по многим условиям?

спасибо
Как в Excel реализовать в строке поиск справа налево?
 
В смысле?
Как в Excel реализовать в строке поиск справа налево?
 
Цитата
a.i.mershik написал:
Примеры: 1) яблоко вишня слива персикНужно найти справа второй пробел и слева первый и оставить слово "вишня". Как слева найти все понятно.2) яблоко вишня слива персик NN*25где NN - это может быть число из одной или двух цифр.И надо найти "x" и от него найти позицию первого пробела слев
Согласен..., на будущее учту.
Просто написал, что есть текст 1: яблоко вишня слива персик

И есть текст2: яблоко вишня слива персик NN*25
где NN - это может быть число из одной или двух цифр.
И надо найти "x" и от него найти позицию первого пробела слева.

Текст 1 или 2 можно поместить в любую ячейку. Например в A1
С первым пунктом все получилось красиво.
Сейчас добиваю с Текстом2, там несколько другие условия ...
Как в Excel реализовать в строке поиск справа налево?
 
Добрый день,  спасибо всем за помощь!

все получилось и реально работает :)
Хорошего дня !!!
Как в Excel реализовать в строке поиск справа налево?
 
Цитата
БМВ написал:
В случае со словом все и сложнее и проще. Только вот самое сложное для вас прочесть правила форума.
Добрый день, спасибо за идеи, попробую реализовать.
На форуме зарегистрировался недавно, но сам сайт и форум знаю давно и он мне нравится.
Правила прочитал.
Вопрос решил задать, так как в поиске нашел отдаленно подобные задачи, в рамках которых решения мне не подошли, к сожалению.
Искал и на других сайтах. Результат аналогичный, вроде решение нащупывалось, но ускользало.
Спасибо за понимание.
Как в Excel реализовать в строке поиск справа налево?
 
Добрый день,
Как в Excel реализовать в строке поиск справа налево?

1). Как найти, между словами второй пробел справа в строке?
2). Как найти в строке определенный символ, например "*" и найти слева от него ближайший пробел?

Поиск слева направо в принципе понятно. И с помощью VBA тоже, а как сделать с помощью функций Excel?

Примеры:
1) яблоко вишня слива персик
Нужно найти справа второй пробел и слева первый и оставить слово "вишня".
Как слева найти все понятно.

2) яблоко вишня слива персик NN*25
где NN - это может быть число из одной или двух цифр.
И надо найти "x" и от него найти позицию первого пробела слева.

В интернете, к сожалению, видел идеи, но решения не нашел.
Спасибо за помощь!
сегодня, 18:00    [21602259]     Ответить | Цитировать Сообщить модератору
Страницы: 1
Наверх