Копирование значения последнего столбца на строку в excel vba

#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. Примечание: вероятно, лучше избегать косвенных, так как они изменчивы.