powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Определение адреса ячейки
24 сообщений из 24, страница 1 из 1
Определение адреса ячейки
    #34435151
pitdoc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
Застопорился на одной проблемке(((
Необходимо програмно заполнять ячейки определёнными значениями (по формулам), т.е.
беруться значения из одной таблицы и вставляются в другую,
но необходимо вставить следующие в следующую пустую строку, так вот не могу программно на неё перейти,
т.е. формулы заполняют первую строчку (A1:D1), потом при следующем заполнении нужно найти первую пустую строчку (A2) после заполненой и получить её координаты, чтобы подставить в формулу

Помогите плиз уже 3 часа борюсь((((
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34435181
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск последней ячейки в Excel
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34435183
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pitdocПривет всем!
Застопорился на одной проблемке(((
Необходимо програмно заполнять ячейки определёнными значениями (по формулам), т.е.
беруться значения из одной таблицы и вставляются в другую,
но необходимо вставить следующие в следующую пустую строку, так вот не могу программно на неё перейти,
т.е. формулы заполняют первую строчку (A1:D1), потом при следующем заполнении нужно найти первую пустую строчку (A2) после заполненой и получить её координаты, чтобы подставить в формулу

Помогите плиз уже 3 часа борюсь((((


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
dim newline as long, cel_adres as string 
'это в начале
newline =  1 
'перед процедурой
cel_adres = cells(newline, 1 ).address
.....'копирование первой строки например Range(cel_adres).past
'после копирования первой строки
newline = newline +  1 
и зацикливаешь или запускаешь процедуру несколько раз.

Можно просто находить последнюю пустую ячейку, но мне всегда так больше нравится
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34435689
pitdoc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем ответившим
Но задача немного в другом. Необходимо чётко получить адрес ячейки.
Т.е. макрос из одной таблици берёт данные и вставляет их в другую, потом он должен определить следующую пустую строчку после только что заполненной, и например присвоить ей переменную "x", чтобы эту переменную поставить в формулу
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34435903
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pitdoc
Но задача немного в другом. Необходимо чётко получить адрес ячейки.


Как же в другом?
vkodor дал ссылку где обсуждается как определить чётка адрес последней непустой ячейки

Я выложил вариант как чётко определять адрес ячейки через использование переменной newline

pitdocТ.е. макрос из одной таблици берёт данные и вставляет их в другую, потом он должен определить следующую пустую строчку после только что заполненной, и например присвоить ей переменную "x", чтобы эту переменную поставить в формулу
Если количество строчек копируемых за один проход строчек 1, то после каждого копирования
newline = newline + 1 ,
где newline - номер следующей строки. в которую будем копировать
Если количество строчек копируемых за один проход больше 1 (например n , то после каждого копирования
newline = newline + n,

а адрес ячейки, т.е. твой "x" cel_adres = cells(newline,1).address


...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34435904
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pitdocСпасибо всем ответившим
Но задача немного в другом. Необходимо чётко получить адрес ячейки.
Т.е. макрос из одной таблици берёт данные и вставляет их в другую, потом он должен определить следующую пустую строчку после только что заполненной, и например присвоить ей переменную "x", чтобы эту переменную поставить в формулу
А вообще лучше всего файл выложить
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34436292
pitdoc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот файл,
в который из sheet2 в sheet1 вставляются значения,
вот необходимо вставить эти же значения только во 2 строчку
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34436567
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pitdocВот файл,
в который из sheet2 в sheet1 вставляются значения,
вот необходимо вставить эти же значения только во 2 строчку
Так они так свтявляются во вторую строчку!
Напишите конкретней что должно проиходить? когда необходимо определять следующую пустую строку? и что должно происходить после этого?
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34436599
pitdoc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
столбец B:B на странице Sheet2 будет меняться каждый день, и каждый день необходимо переносить данные на страницу Sheet1, в новую строчку, т.е. ссегодня я перенесу данные из Sheet2(B:B) в Sheet1(A2:D2), завтра нужно будет перенести из Sheet2(B:B) в Sheet1(A3:D3) и т.д.
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34436691
JimOrange
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что вышло...
Использовал функцию поиска последней занятой строки, описанной выше.
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34436693
JimOrange
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34436941
pitdoc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JimOrange, you are #1!!!
работает, только мне бы хотелось VLOOKUP сохранить, потому что порядок и количество строчек может измениться
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34437087
pitdoc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё получилось!!!
Всем огромное спасибо за помощь!!
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34437112
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pitdocстолбец B:B на странице Sheet2 будет меняться каждый день, и каждый день необходимо переносить данные на страницу Sheet1, в новую строчку, т.е. ссегодня я перенесу данные из Sheet2(B:B) в Sheet1(A2:D2), завтра нужно будет перенести из Sheet2(B:B) в Sheet1(A3:D3) и т.д.

Так бы сразу и сказал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
' Фукция для нахождения последней строки
Public Function LastRow(Optional ws As Worksheet, Optional FindRange As String) As Long
  If ws Is Nothing Then Set ws = ActiveSheet
  If FindRange = "" Then FindRange = Cells.Address
  LastRow = ws.Range(FindRange).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
End Function

Sub test()

 Sheets("Sheet1").Select

  'следующая пустая строка, необходимо указать столбцы в которых будет осуществляться поиск последней заполненной строки
  n = LastRow(, "$A:$D") +  1 
   
   Range("A" & n).Select
   Selection.NumberFormat = "#,##0.00"
   ActiveCell.Formula = "=VLOOKUP(""test1"",'sheet2'!$A:$B,2,FALSE)"

   Range("B" & n).Select
   Selection.NumberFormat = "#,##0.00"
   ActiveCell.Formula = "=VLOOKUP(""test2"",'sheet2'!$A:$B,2,FALSE)"

   Range("C" & n).Select
   Selection.NumberFormat = "#,##0.00"
   ActiveCell.Formula = "=VLOOKUP(""test3"",'sheet2'!$A:$B,2,FALSE)"

   Range("D" & n).Select
   Selection.NumberFormat = "#,##0.00"
   ActiveCell.Formula = "=VLOOKUP(""test4"",'sheet2'!$A:$B,2,FALSE)"
   
   Sheets("Sheet1").Range("A" & n & ":" & "D" & n).Select
   Selection.copy
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

End Sub
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34437489
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри ещё это сколько угодно столбцов делаешь, в первой строке ставишь наименование
и всё выбирается само. Я бы так сделал!


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test2()
  Dim myrange As Range, n As Long, x As String, y As String
  ' предполагается что в 1-й строке содержатся данные для поска (выбора)
  ' буква первого столбца, который необходимо заполнить
  x = "A"
   ' буква первого столбца, который необходимо заполнить
  y = "D"
  Sheets("Sheet1").Select
  n =  1  + Range(x & ":" & y).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
  Set myrange = Range(x & n & ":" & y & n)
   myrange.NumberFormat = "#,##0.00"
  For Each icel In myrange
    icel.Value = Sheets("Sheet2").Range("$A:$B").Find(Cells( 1 , icel.Column), LookIn:=xlValues, LookAt:=xlWhole).Offset( 0 ,  1 ).Value
  Next icel
End Sub
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34444524
pitdoc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо,
всё что хотел вроде получилось,
вот только теперь захотел немного изменить и что-то не выходит(((
пример: на первой странице есть два значения для строки "test23", так вот я хотел чтобы значение для "test23" бралось после Section1. Применил вышенаписанную ф-ию, определил диапазон где надо искать да что-то ошибки выдаёт ((((
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34445152
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pitdocвсем спасибо,
всё что хотел вроде получилось,
вот только теперь захотел немного изменить и что-то не выходит(((
пример: на первой странице есть два значения для строки "test23", так вот я хотел чтобы значение для "test23" бралось после Section1. Применил вышенаписанную ф-ию, определил диапазон где надо искать да что-то ошибки выдаёт ((((

Первую строку в исходных данных оставляй пустой
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34445208
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad pitdocвсем спасибо,
всё что хотел вроде получилось,
вот только теперь захотел немного изменить и что-то не выходит(((
пример: на первой странице есть два значения для строки "test23", так вот я хотел чтобы значение для "test23" бралось после Section1. Применил вышенаписанную ф-ию, определил диапазон где надо искать да что-то ошибки выдаёт ((((

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

Ещё вариант первую строку не обязательно оставлять пустой, если начинать нужно сначала, во второй строке поставь "*"
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34445213
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложил файл с обоими вариантами.
Если есть возможность оставить пустой 1-ю строку в исходным данных лучше пользоваться наверное процедурой test1(), но можно и test2(). Вообщем сам посмотришь
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34447723
pitdoc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad, огромное спасибо
вот только странно, а почему я не могу обратиться к диапазону, если он находится в другом документе???
т.е. если данные находятся на одном *.xls, а мне их надо на другой вставить??

Set FI = Range("A" & Workbooks("документ откуда нужно взять данные.xls").Sheets("страница, откуда нужно взять данные").Range("$A:$A").Find(What:="Section1", LookIn:=xlValues, LookAt:=xlWhole).Row - 1)

icel.Value = Workbooks("документ откуда нужно взять данные.xls").Sheets("страница, откуда нужно взять данные").Range("$A1:$B5000").Find(Cells(1, icel.Column), After:=FI, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Value
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34447793
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pitdocDeggasad, огромное спасибо
вот только странно, а почему я не могу обратиться к диапазону, если он находится в другом документе???
т.е. если данные находятся на одном *.xls, а мне их надо на другой вставить??

Set FI = Range("A" & Workbooks("документ откуда нужно взять данные.xls").Sheets("страница, откуда нужно взять данные").Range("$A:$A").Find(What:="Section1", LookIn:=xlValues, LookAt:=xlWhole).Row - 1)

icel.Value = Workbooks("документ откуда нужно взять данные.xls").Sheets("страница, откуда нужно взять данные").Range("$A1:$B5000").Find(Cells(1, icel.Column), After:=FI, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Value

Код: plaintext
1.
2.
Set FI = Range("A" & Workbooks("документ откуда нужно взять данные[color=red].xls[/color]").Sheets("страница, откуда нужно взять данные").Range("$A:$A").Find(What:="Section1", LookIn:=xlValues, LookAt:=xlWhole).Row -  1 )

icel.Value = Workbooks("документ откуда нужно взять данные[color=red].xls[/color]").Sheets("страница, откуда нужно взять данные").Range("$A1:$B5000").Find(Cells( 1 , icel.Column), After:=FI, LookIn:=xlValues, LookAt:=xlWhole).Offset( 0 ,  1 ).Value

Красное удали! Расширение не нужно указывать в названии файла!
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34447807
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предудыщее сообщение не смотри!!!!!!!!!!!!!!!
Красным пометить внутри модуля не получилось

Set FI = Range("A" & Workbooks("документ откуда нужно взять данные.xls").Sheets("страница, откуда нужно взять данные").Range("$A:$A").Find(What:="Section1", LookIn:=xlValues, LookAt:=xlWhole).Row - 1)

icel.Value = Workbooks("документ откуда нужно взять данные.xls").Sheets("страница, откуда нужно взять данные").Range("$A1:$B5000").Find(Cells(1, icel.Column), After:=FI, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Value



Красное удали! Расширение не нужно указывать в названии файла!
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34447812
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точка тоже красная
...
Рейтинг: 0 / 0
Определение адреса ячейки
    #34448033
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub test3()
  Dim myrange As Range, FindRange As Range, n As Long, x As String, y As String, z As Long, FI As Range
   x = "A"

  y = "C"
 ' номер последнего столбца в диапазоне поска исходных данных
  z =  50 
  Sheets("Sheet2").Select
  n =  1  + Range(x & ":" & y).Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
  Set myrange = Range(x & n & ":" & y & n)
   myrange.NumberFormat = "#,##0.00"
  ' Определение диапазона поиска
   Set FindRange = Workbooks("Книга из которой копируем").Sheets("Sheet1").Range("A1" & ":" & "B" & z)
  
  For Each icel In myrange
    Set FI = Range("A" & FindRange.Find(Cells( 2 , icel.Column), _
    LookIn:=xlValues, SearchDirection:=xlPrevious, LookAt:=xlWhole).Row)
    
    icel.Value = FindRange.Find(Cells( 1 , icel.Column), _
    After:=FI, LookIn:=xlValues, LookAt:=xlWhole).Offset( 0 ,  1 ).Value
  Next icel
End Sub

Немного поменял, посмотри!
Главное первую строку в исходных данных не обязательно оставлять пустой, а то раздражало
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Определение адреса ячейки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]