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

Страницы: 1 2 След.
Автоматическая перенумерация после удаления строк, Макрос удаляет произвольную строку, в этом же макросе после удаления необходимо перенумеровать ячейки в столбце №п/п
 
Полезная тема, применил описанное выше у себя в файле :)
Извлечь числа до и после дефиса и произвести с ними вычисляния
 
Ігор Гончаренко, работает для ячейки 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
Извлечь числа до и после дефиса и произвести с ними вычисляния
 
Ігор Гончаренко,
ну что-то тоже не хочет, ошибку выдает) может быть потому что я своими кривыми руками не туда вставляю))
в посте #6 пример обновленный выложил, там обозначил как должно получаться при каждом нажатии на кнопку
Изменено: Yuriy575 - 16.01.2022 20:07:45
Извлечь числа до и после дефиса и произвести с ними вычисляния
 
Цитата
_Igor_61 написал:
Не стыдно?
Стыдно)
Но не в синтаксисе вроде дело. Поправил на ["a" & iLastRow] - тоже не работает :(

Цитата
Ігор Гончаренко написал:
не понимаю о чем вы спрашиваете, но...Код ...
Тоже попробовал но не получается, прилагаю файл примера, в который попробовал вставить эту строку.
Изменяет ячейку А1, а должно вставлять число в А2, она идет следующая пустая за А1.
Изменено: Yuriy575 - 16.01.2022 19:38:58
Извлечь числа до и после дефиса и произвести с ними вычисляния
 
Ігор Гончаренко, работает, только меняет не в 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
Извлечь числа до и после дефиса и произвести с ними вычисляния
 
Добрый день!
Исходные данные: В ячейке А1 содержится число в текстовом формате: "5014-01". Дефис выступает разделителеим.
Задача:
1. Нужно чтобы в ячейку А2 прописалось "5015-01" (т.е. инкрементировать первую часть числа на 1).
2. Вторую часть числа (после дефиса) - прописать в зависимости от текущего месяца. Январь - 01, Февраль - 02, и т.п.
Обратиться к книге, зная лишь часть названия, Как обратиться к книге, не зная полного названия файла
 
Евгений Смирнов, Jack Famous, Дмитрий(The_Prist) Щербаков, спасибо за подсказку, буду пробовать. Теперь вроде в голове картинка складывается, как сделать.
Обратиться к книге, зная лишь часть названия, Как обратиться к книге, не зная полного названия файла
 
Ігор Гончаренко, Спасибо за обратную связь, уточняю: КП обычно открыто. И из него надо запускать макрос.
Хочу сделать макрос, который будет открывать книгу учёта, и заносить туда данные из определенных ячеек КП.
Как открыть книгу учета и занести данные - мне понятно.
А вот как обратиться к ячейкам из книги "КП....." по неполному названию - не понимаю пока.  
Изначально перед выполнением макроса - книга "КП...." уже является открытой. Из неё запускаем макрос, который будет переносить некоторые данные из неё в книгу учёта. Надо как-то перемещаться между этими двумя книгами.

Если всё-таки обязательно нужен путь к книге, то вариант - сначала можно обязать пользователя положить книгу КП по пути "C:\" например, и оттуда к ней обращаться.

Может как-то можно идентифицировать название открытой книги и занести его в переменную? А уже потом перемещаться между книгами, используя название файла "КП....", которое мы занесли в переменную?  
Изменено: Yuriy575 - 14.01.2022 08:43:27
Обратиться к книге, зная лишь часть названия, Как обратиться к книге, не зная полного названия файла
 
Добрый день!
Можно ли как-то обратиться к книге, зная лишь то, что её название всегда начинается с букв "КП"?
После букв "КП" может быть что-угодно (например: "КП 7210121-92 для..."), известно лишь то что название книги всегда начинается с "КП".
Вставка формулы с переменными макросом
 
, спасибо) проанализировал - нашел у себя две ошибки. Не поставил знак "=" перед SUM, и не поставил & перед предпоследними кавычками.
да уж, с синтаксисом надо быть внимательнее
Вставка формулы с переменными макросом
 
Магия какая-то)
Это работает! Спасибо большое))

Цитата
Диапазон динамичный, а ячейка для формулы (D10) статична
ячейка D10 тоже динамична, старался не усложнять пример)

Цитата
Но зачем вычислять первую строку?
Первая строка тоже в динамическом диапазоне, она всегда разная, поэтому её тоже приходится вычислять и заносить в переменную iFirstrow :)  
Вставка формулы с переменными макросом
 
Доброго времени суток!
Есть две переменные, в которых содержится номер первой строки - iFirstrow и номер последней строки - iLastrow.
Задача - вставить формулу суммирования плавающего диапазона столбца F....

Должно получиться что-то на подобии:
Код
Range("D10").Formula="SUM("&"F"& iFirstrow & ":F"& iLastrow")"
Этот вариант не работает.
Перебрал кучу вариантов, не могу разобраться с синтаксисом, постоянно выдает разные ошибки.
Ввод формулы макросом в плавающий диапазон
 
RAN, да, циклом мне показалось удобней, т.к. диапазоны плавающие у меня
Изменено: Yuriy575 - 06.01.2022 16:58:22
Ввод формулы макросом в плавающий диапазон
 
gling, спасибо) использовал второй вариант в цикле For Each.
Прилагаю на всякий случай файл с решением, может кому пригодится.
Изменено: Yuriy575 - 27.12.2021 09:02:14
Нет "движка", с помощью которого можно передвигаться по листу вправо-влево.
 
, Аххах))) отличная тема, создала новогоднее настроение))) С наступающим, приколисты! :)
Ввод формулы макросом в плавающий диапазон
 
Добрый день!
Задачка вроде не сложная, но не знаю как решить: есть три столбика - цена, кол-во, стоимость.
В этих столбика последняя строка - неопределенная и плавает.
Нужно макросом (циклом) внести формулу перемножения цены на количество - в каждую ячейку "стоимость".
Пример прилагаю.
То что должно получиться - в примере на листе №2.
Суммирование динамического диапазона с пропусками, Суммирование динамичной колонки
 
Kuzmich,Спасибо, подошел способ. Всё работает!
Суммирование динамического диапазона с пропусками, Суммирование динамичной колонки
 
Можно ли присоединиться к Вашей теме?
У меня похожая задача, но мне надо чтобы в ячейку (обязательно при помощи макроса) забивалась именно формула, а не её результат вычисления.

Требуется макрос, который будет вписывать в ячейку G238 ФОРМУЛУ суммирования всех ячеек выше. (Нужно чтобы формула была типа =СУММ(............) - а в скобки указывались значения диапазона. Диапазон всегда разный, так как кол-во строк всегда разное.
В данном случае требуется просуммировать диапазон G6:G237, но в таблице всегда разное кол-во строк и получается что диапазоны всегда разные.

P.S. Нужно вписывать макросом именно формулу, а не её результат вычисления. Как это можно сделать?
Пример прилагаю.
VBA. Протянуть формулу до крайней заполненной ячейки
 
то что нужно)
Нужно объединять ячейки с сохранением текста
 
МатросНаЗебре, да) спасибо)) изучил свойство Resize и догнал вроде)) Пошел изучать VBA дальше))
Нужно объединять ячейки с сохранением текста
 
skais675, применил этот код, всё как надо работает теперь :)
Спасибо большое)
Но немного не понял как работает, почему в этой строке
Код
Cells(rww, 1).Resize(, 5).Merge

не указано число перед запятой... Попробую разобраться на выходных.

Нужно объединять ячейки с сохранением текста
 
skais675, проверил, что-то не работает
Приложил пример, как должно получиться.
Изменено: Yuriy575 - 04.04.2020 18:22:36
Нужно объединять ячейки с сохранением текста
 
skais675, Применил этот вариант, работает.
А как сделать чтоб по строкам объединялись смежные ячейки столбцов Fи G? При этом чтоб в них закидывался текст из диапазонов F:M ?
Что нужно поменять в коде?
Нужно объединять ячейки с сохранением текста
 
Всем здравствуйте!
Нужно объединять ячейки с сохранением текста. Строк около 5000.
Нашел пример как объединять, но не могу понять как прописать цикл.... подскажите пожалуйста.
Нужно объединять ячейки в строке в диапазоне A1:E1, и так до A5000:E5000. Причем нужно чтобы при установленном фильтре объединялись только видимые ячейки. Невидимые не нужно объединять.
Макрос нашел в примерах, но не могу с циклом разобраться...
Думаю там всё просто должно быть, но как именно - понять не могу, туплю уже часа 3 над этим)
Пример прилагаю. Помогите плз.
Изменено: Yuriy575 - 04.04.2020 14:58:04
Вставить формулы массива макросом
 
vikttur,  :D
В общем я задачку решил - просто в формуле прописал несколько лишних условий и отошел от макроса, макрос не понадобился в моем случае.
P. S. Но всё-таки интересно почему VBA ругался на кавычки.
Вставить формулы массива макросом
 
vikttur,поправился)
Вставить формулы массива макросом
 
Hugo, выдает ошибку "Нельзя установить свойство FormulaArray класса Range"
Я выяснил методом тыка, что если в формуле заменить кавычки на цифры - то формула вставляется нормально и эта ошибка не выскакивает... Почему так происходит, и как мне всё-так вставить с кавычками, т. к. мне нужно чтобы при определенных условиях формула выдавала "пустоту"

Вот вариант который вставляется нормально. Заменил "" на 777:
Код
=IFERROR(IF(E116=0,777,INDEX(BJ6:BK15,MATCH(MIN(IF(BK6:BK15>E116,BK6:BK15)),BK6:BK15,0),1)),777)

Но как всё-таки вставить с кавычками? Нужно именно чтобы с кавычками вставлялось, никакие другие значения не подходят, иначе дальше у меня вылазят ошибки в расчетах(
Изменено: Yuriy575 - 28.03.2020 19:17:02
Вставить формулы массива макросом
 
Добрый день!
У меня похожая проблема, не вставляется формула массива макросом.
Макрос выглядит так:
Код
If Not Intersect(Target, Range("F106")) Is Nothing Then
        If Range("F106").Value = "Есть" Then Range("D37").FormulaArray = "=1+1+1+1"
    End If

Этот макрос работает норм и вставляет формулу массива, которая выдает результат 4. Нормально вставляет  {=1+1+1+}.
НО нужная мне формула в экселе выглядит так:
Код
=ЕСЛИОШИБКА(ЕСЛИ(E116=0;"";ИНДЕКС(BJ6:BK15;ПОИСКПОЗ(МИН(ЕСЛИ(BK6:BK15>E116;BK6:BK15));BK6:BK15;0);1));"")   

Скорей всего саму формулу надо как-то по другому прописать, чтоб VBA её нормально вставлял в эксель, но я не знаю - как именно. Помогите плз!
Изменено: Yuriy575 - 27.03.2020 21:28:16
Макрос: многоразовая вставка сформированных таблиц на новый лист
 
Mershik, Шикарно! теперь всё работает, как надо)

На всякий случай оставлю получившийся код здесь, вдруг кому пригодится.
Код
Sub СуперКнопка()
Dim i As Double
Dim Mycells As Range
Dim MyRows As Range
Application.ScreenUpdating = False
ilastrow = Worksheets("Лист1").Cells(Rows.Count, 3).End(xlUp).Row
    Worksheets("Лист1").Range("A6:C" & ilastrow).Copy
    Worksheets("Лист2").Activate
ilastrow2 = Worksheets("Лист2").Cells(Rows.Count, 4).End(xlUp).Row
    If ilastrow2 <= 1 Then
    ilastrow2 = ilastrow2
    Else
    ilastrow2 = ilastrow2 + 3
    End If
    Worksheets("Лист2").Cells(ilastrow2, 1).Select
    ActiveSheet.Paste
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Worksheets("Лист1").Activate
    Worksheets("Лист1").Range("D6:D" & ilastrow).Copy
    Worksheets("Лист2").Activate
ilastrow3 = Worksheets("Лист2").Cells(Rows.Count, 4).End(xlUp).Row
    If ilastrow3 <= 1 Then
    ilastrow3 = ilastrow3
    Else
    ilastrow3 = ilastrow3 + 3
    End If
    Worksheets("Лист2").Cells(ilastrow3, 4).Select
    ActiveSheet.Paste
    For Each Mycells In Selection
    If Mycells.Value = "" Then
    If MyRows Is Nothing Then
        Set MyRows = Mycells
        Else
        Set MyRows = Union(MyRows, Mycells)
        End If
        End If
    Next Mycells
    If Not MyRows Is Nothing Then MyRows.EntireRow.Delete
Application.ScreenUpdating = True
End Sub
Макрос: многоразовая вставка сформированных таблиц на новый лист
 
Mershik, Прилагаю пример. Создал лист "Должно получиться так". И забил формулы, примерно как по факту у меня в рабочем файле.
Смысл общий такой: во всех ячейках формулы с обработчиком ошибок. Если ошибка - то "". Поэтому визуально - ячейки пустые. Вот их и надо как-то удалять.
Страницы: 1 2 След.
Наверх