Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Нумерация столбца с 19ой по ячейку с текстом "Составил:" - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Нумерация столбца с 19ой по ячейку с текстом "Составил:" (Макросы/Sub)
Нумерация столбца с 19ой по ячейку с текстом "Составил:"
timo64uk Дата: Понедельник, 11.10.2021, 15:28 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 1 ±
Замечаний: 0% ±

Добрый день дамы и господа :D
Есть макрос от buchlotnik (храню, пользуюсь)
[vba]
Код
[A19] = 1
Range("A20:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC2="""","""",MAX(R19C1:R[-1]C)+1)"
[/vba]
Но он ориентируется на последнюю не пустую ячейку столбца В.
А мне нужно пронумеровать с А19ой и до ячейки содержащей текст "Составил:" в приложенном файле это ячейка А39.
Т.е. А19 =1 .... А38 =20
А19=1 это неизменная константа, а вот значение "Составил:" может находится и в А21 и в А99999.
Прошу вашего содействия в решении данного вопроса.
К сообщению приложен файл: 12345678.xlsx (70.0 Kb)


Сообщение отредактировал timo64uk - Понедельник, 11.10.2021, 15:58
 
Ответить
СообщениеДобрый день дамы и господа :D
Есть макрос от buchlotnik (храню, пользуюсь)
[vba]
Код
[A19] = 1
Range("A20:A" & Range("B" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=IF(RC2="""","""",MAX(R19C1:R[-1]C)+1)"
[/vba]
Но он ориентируется на последнюю не пустую ячейку столбца В.
А мне нужно пронумеровать с А19ой и до ячейки содержащей текст "Составил:" в приложенном файле это ячейка А39.
Т.е. А19 =1 .... А38 =20
А19=1 это неизменная константа, а вот значение "Составил:" может находится и в А21 и в А99999.
Прошу вашего содействия в решении данного вопроса.

Автор - timo64uk
Дата добавления - 11.10.2021 в 15:28
Serge_007 Дата: Понедельник, 11.10.2021, 16:23 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Здравствуйте

[vba]
Код
Sub timo64uk()
    Dim i As Integer
    Dim LastRow As Long
    LastRow = WorksheetFunction.Match("Составил:", Range("a1:a1000"), 0) - 1
        For i = 19 To LastRow
            ActiveSheet.Range("a" & i).Value = i - 18
        Next i
End Sub
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

[vba]
Код
Sub timo64uk()
    Dim i As Integer
    Dim LastRow As Long
    LastRow = WorksheetFunction.Match("Составил:", Range("a1:a1000"), 0) - 1
        For i = 19 To LastRow
            ActiveSheet.Range("a" & i).Value = i - 18
        Next i
End Sub
[/vba]

Автор - Serge_007
Дата добавления - 11.10.2021 в 16:23
Gustav Дата: Понедельник, 11.10.2021, 16:34 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2703
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Если следовать стилю первой редакции, то как-то так:
[vba]
Код
[A19] = 1
Range("A20:A" & Range("A20:A" & Rows.Count).Find("Составил").Row - 1).FormulaR1C1 = "=MAX(R19C1:R[-1]C)+1"
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЕсли следовать стилю первой редакции, то как-то так:
[vba]
Код
[A19] = 1
Range("A20:A" & Range("A20:A" & Rows.Count).Find("Составил").Row - 1).FormulaR1C1 = "=MAX(R19C1:R[-1]C)+1"
[/vba]

Автор - Gustav
Дата добавления - 11.10.2021 в 16:34
Erjoma1981 Дата: Понедельник, 11.10.2021, 16:49 | Сообщение № 4
Группа: Проверенные
Ранг: Участник
Сообщений: 66
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010, 2019
Еще вариант
[vba]
Код
Sub Перенумеровать()
    Dim ПерваяЯчейка As Range, КоличествоПронумерованных As Long
    
    Set ПерваяЯчейка = [A19]
    Application.ScreenUpdating = False
    ПерваяЯчейка.Value = 1
    КоличествоПронумерованных = 1
    Do While InStr(ПерваяЯчейка.Offset(КоличествоПронумерованных, 0).Value, "Составил:") = 0
        КоличествоПронумерованных = КоличествоПронумерованных + 1
        ПерваяЯчейка.Offset(КоличествоПронумерованных - 1, 0).Value = КоличествоПронумерованных
    Loop
    Application.ScreenUpdating = True
End Sub
[/vba]
 
Ответить
СообщениеЕще вариант
[vba]
Код
Sub Перенумеровать()
    Dim ПерваяЯчейка As Range, КоличествоПронумерованных As Long
    
    Set ПерваяЯчейка = [A19]
    Application.ScreenUpdating = False
    ПерваяЯчейка.Value = 1
    КоличествоПронумерованных = 1
    Do While InStr(ПерваяЯчейка.Offset(КоличествоПронумерованных, 0).Value, "Составил:") = 0
        КоличествоПронумерованных = КоличествоПронумерованных + 1
        ПерваяЯчейка.Offset(КоличествоПронумерованных - 1, 0).Value = КоличествоПронумерованных
    Loop
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Erjoma1981
Дата добавления - 11.10.2021 в 16:49
timo64uk Дата: Понедельник, 11.10.2021, 16:52 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 1 ±
Замечаний: 0% ±

Спасибо.
Это просто изобилие. Очень рад.
 
Ответить
СообщениеСпасибо.
Это просто изобилие. Очень рад.

Автор - timo64uk
Дата добавления - 11.10.2021 в 16:52
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Нумерация столбца с 19ой по ячейку с текстом "Составил:" (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!