Страницы: 1
RSS
Извлечь числа до и после дефиса и произвести с ними вычисляния
 
Добрый день!
Исходные данные: В ячейке А1 содержится число в текстовом формате: "5014-01". Дефис выступает разделителеим.
Задача:
1. Нужно чтобы в ячейку А2 прописалось "5015-01" (т.е. инкрементировать первую часть числа на 1).
2. Вторую часть числа (после дефиса) - прописать в зависимости от текущего месяца. Январь - 01, Февраль - 02, и т.п.
 
Код
Sub NextNum(rg As Range)
  Dim c As Range
  For Each c In rg
    c = Val(Split(c, "-")(0)) + 1 & "-" & Format(Month(Now), "00")
  Next
End Sub

Sub test()
  NextNum [a1]
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, работает, только меняет не в A2, а в A1.
Код
NextNum [a2] 
- так ставит в А2.

Я бы хотел чтобы номер подставлялся в самую последнюю незаполненную ячейку столбца A.
Думал что смогу воспользоваться методом Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row
Но это не работает:
Код
Sub NextNum(rg As Range)
  Dim c As Range
  For Each c In rg
    c = Val(Split(c, "-")(0)) + 1 & "-" & Format(Month(Now), "00")
  Next
End Sub
 
Sub test()
Dim iLastRow As Long

iLastRow = Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row
MsgBox (iLastRow)
iLastRow = iLastRow + 1
  NextNum [a&iLastRow] 'тут ошибка, на этой строчке стопорится
End Sub

Подскажите, как сделать чтоб номер подставлялся в ячейку, ниже последней заполненной в стобце А?
Изменено: Yuriy575 - 16.01.2022 18:11:24
 
не понимаю о чем вы спрашиваете, но...
Код
Sub test()
  NextNum iWorksheets("Лист1").Cells(Rows.Count, 1).End(xlUp)
End Sub
Изменено: Ігор Гончаренко - 16.01.2022 19:08:59
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Yuriy575 написал: не работает
Что именно и где?  Я могу написать на заборе "Вася - дурак", но это не значит Вася дурак. Yuriy575, почти 50 сообщений на форуме... Не стыдно?
Цитата
Yuriy575 написал: a&iLastRow
Где a где Last Row и где &?  Вы вообще что и где пытаетесь сделать?
Цитата
Yuriy575  написал:
iLastRow = iLastRow + 1
Это и есть последняя плюс нижняя, куда записывать. Не пробовали?
И да, если  указана ячейка A2, скорее всего в нее и будет записываться, а не в A1 :)
 
Цитата
_Igor_61 написал:
Не стыдно?
Стыдно)
Но не в синтаксисе вроде дело. Поправил на ["a" & iLastRow] - тоже не работает :(

Цитата
Ігор Гончаренко написал:
не понимаю о чем вы спрашиваете, но...Код ...
Тоже попробовал но не получается, прилагаю файл примера, в который попробовал вставить эту строку.
Изменяет ячейку А1, а должно вставлять число в А2, она идет следующая пустая за А1.
Изменено: Yuriy575 - 16.01.2022 19:38:58
 
погадаем))) может так:
Код
Sub test()
  [a2] = Val(Split([a1], "-")(0)) + 1 & "-" & Format(Month(Now), "00")
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,
ну что-то тоже не хочет, ошибку выдает) может быть потому что я своими кривыми руками не туда вставляю))
в посте #6 пример обновленный выложил, там обозначил как должно получаться при каждом нажатии на кнопку
Изменено: Yuriy575 - 16.01.2022 20:07:45
 
однако
Код
Sub test()
  [a2] = Val(Split([a1], "-")(0)) + 1 & "-" & Format(Month(Now), "00")
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, работает для ячейки A2.
Спасибо за наводку на правильную мысль)

Сделал для последней заполненной ячейки вот так:
Рабочий макрос с примером прилагаю, может кому пригодится.
Код
Sub test()
Dim I As Long
Dim I2 As Long
Dim IE As String


I = Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row 'номер последней заполненной строки
IE = Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp) 'значение, которое содержит последняя заполненная строка
I2 = I + 1 'наша целевая ячейка (последняя пустая ячейка), в которую надо вставить требуемое число

Range("A" & I2) = Val(Split([IE], "-")(0)) + 1 & "-" & Format(Month(Now), "00")
End Sub
Изменено: Yuriy575 - 17.01.2022 09:21:18
Страницы: 1
Наверх