#excel #vba
Вопрос:
Я пытаюсь скопировать последнее значение столбца в строке на листе (даже если есть пробелы). Текущий код, который у меня есть прямо сейчас, может копировать последнюю колонку до тех пор, пока в ней нет пробелов. Вставка кода ниже:
Dim lastrow As Long, i As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 2 To lastrow
Range("a" amp; i).End(xlToRight).Copy
Range("a" amp; i).End(xlToLeft).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Next i
Мне нужно, чтобы A2 скопировал последнее значение столбца его raw, которое находится в D2 (электронная почта). Затем A3 скопирует последнее значение столбца своей строки, которое равно C3 (электронная почта).
Спасибо
Ответ №1:
Смог получить ответ..разместив код ниже. Спасибо Бигбену за помощь.
Sub range1()
Dim i, a, lrow, lcol As Long
Dim rng As range
lrow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lrow
lcol = Cells(i, Columns.Count).End(xlToLeft).Column
Cells(i, "a") = Cells(i, lcol).Value
Next i
End Sub
Ответ №2:
Вы можете сделать это только с помощью формул:
=IFERROR(INDIRECT(ADDRESS(ROW(),SUMPRODUCT(MAX(COLUMN(B2:F2)*(B2:F2<>""))))),"")
где эта формула вставлена в А2 и заполнена всеми желтыми ячейками:
Если вы действительно хотите использовать VBA, вы все равно можете использовать формулу и просто вставлять значения, чтобы избежать всех циклов!
Sub eh()
Dim lRow As Long: lRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
Sheet1.Range("A2:A" amp; lRow).Formula = _
"=IFERROR(INDIRECT(ADDRESS(ROW(),SUMPRODUCT(MAX(COLUMN(B2:F2)*(B2:F2<>""""))))),"""")"
Sheet1.Range("A2:A" amp; lRow).Value2 = Sheet1.Range("A2:A" amp; lRow).Value2
End Sub
Хотя одна вещь, которая меня смущает, — это то, как ваш lastRow
расчет получает последнюю строку в столбце А, когда столбец А еще не заполнен…
Комментарии:
1. Последнее значение будет работать только в том случае, если в конце столбца A есть значение, поэтому я просто помещаю туда случайное значение. На самом деле, однако, это всего лишь часть всего проекта, над которым я работаю, и в конце всегда есть данные.
2. Примечание: вероятно, лучше избегать косвенных, так как они изменчивы.