Ответ 1
Это один лайнер на самом деле. Не нужно использовать .Autofill
Range("M3:M" & LastRow).Formula = "=G3&"",""&L3"
Я пытаюсь нарисовать формулу в ячейке M3 до конца набора данных.
Я использую столбец L в качестве своей базы, чтобы определить последнюю ячейку с данными. Моя формула - это объединение двух ячеек с текстовой запятой между ними.
Моя формула = G3 & "," & L3
Я хочу, чтобы Excel нарисовал эту формулу так, чтобы
Ячейка M4 будет = G4 & "," & L4
Ячейка M5 будет иметь вид = G5 & "," & L5 и т.д.
Мой код:
Range("$M$3").Formula = Range("G3") & (",") & Range("L3")
Dim Lastrow As Long
Application.ScreenUpdating = False
Lastrow = Range("L" & Rows.Count).End(xlUp).Row
Range("M4").FormulaR1C1 = Range("G4") & (",") & Range("L4")
Range("M4").AutoFill Destination:=Range("M4:M" & Lastrow)
ActiveSheet.AutoFilterMode = False
Application.ScreenUpdating = True
Мой вывод сводит текстовые значения из ячейки M3 вплоть до конца набора данных. Я искал несколько часов, пытаясь найти исправление, но не могу найти то, что пытается добиться того, к чему я стремлюсь.
Это один лайнер на самом деле. Не нужно использовать .Autofill
Range("M3:M" & LastRow).Formula = "=G3&"",""&L3"
Для людей с похожим вопросом и найдите этот пост (как я и сделал); вы можете сделать это даже без остановки, если ваш набор данных отформатирован как таблица.
Range("tablename[columnname]").Formula = "=G3&"",""&L3"
Сделать это истинным одним лайнером. Надеюсь, это поможет кому-то!
В качестве альтернативы вы можете использовать FillDown
Range("M3") = "=G3&"",""&L3": Range("M3:M" & LastRow).FillDown
Замечательный ответ! Мне нужно было заполнить пустые ячейки в столбце, где были заголовки в ячейках, которые применялись к пустым ячейкам ниже до следующей ячейки заголовка.
Я использовал ваш код выше для разработки кода, который ниже моего примера. Я применил этот код как макрос ctl/shft/D, чтобы быстро запустить столбец, копирующий заголовки.
--- Пример таблицы ------------ Заголовок 1 копируется в строки 2 и 3; Заголовок 2 копируется в ячейки ниже него в строках 5 и 6. После второго запуска макроса активная ячейка является ячейкой Title3.
' **row** **Column1** **Column2**
' 1 Title1 Data 1 for title 1
' 2 Data 2 for title 1
' 3 Data 3 for title 1
' 4 Title2 Data 1 for title 2
' 5 Data 2 for title 2
' 6 Data 3 for title 2
' 7 Title 3 Data 1 for title 3
----- Код CopyDown ----------
Sub CopyDown()
Dim Lastrow As String, FirstRow As String, strtCell As Range
'
' CopyDown Macro
' Copies the current cell to any empty cells below it.
'
' Keyboard Shortcut: Ctrl+Shift+D
'
Set strtCell = ActiveCell
FirstRow = strtCell.Address
' Lastrow is address of the *list* of empty cells
Lastrow = Range(Selection, Selection.End(xlDown).Offset(-1, 0)).Address
' MsgBox Lastrow
Range(Lastrow).Formula = strtCell.Formula
Range(Lastrow).End(xlDown).Select
End Sub
Новичок в VBA - нужна помощь
У меня есть код для объединения трех столбцов в листе различий для одной ячейки -
Sheets("Sheet2").Range("D2") = Sheets("Sheet2").Range("A2") & Sheets("Sheet2").Range("B2") & Sheets("Sheet2").Range("C2")
Я хочу повторить эту ячейку в течение п числа раз в листе Excel, пока строка не имеет значения - не в состоянии сделать это
Я знаю, что это старый пост, но есть ли один слой для заполнения не формулой, а значением из ячейки выше, до последней строки листа (конец данных)
Я пробовал это, где в I3 у меня есть значение, и я хочу заполнить его автоматически: Sub Test() Dim ws As Worksheet С ws Range ("I3"). Диапазон автозаполнения ("I4: I" и ws.Cells(ws.Rows.Count, "A"). End (xlUp).Row) Конец с 'ws.Range("I3"). Автозаполнение "ws.Range(" I4: я "& ws.Cells(ws.Rows.Count," A "). End (xlUp).Row) End Sub Спасибо!
Довольно много новичков VBA. Когда я увидел "один лайнер", я взял его буквально.
Обратите внимание, что вам все еще нужно выполнить Dim Lastrow и найти, что с кодом в OP и , а затем это однострочный.