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

Помогите плиз уже 3 часа борюсь((((
...
Рейтинг: 0 / 0
03.04.2007, 17:57:43
    #34435181
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
Поиск последней ячейки в Excel
...
Рейтинг: 0 / 0
03.04.2007, 17:58:30
    #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
03.04.2007, 23:00:57
    #34435689
pitdoc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
Спасибо всем ответившим
Но задача немного в другом. Необходимо чётко получить адрес ячейки.
Т.е. макрос из одной таблици берёт данные и вставляет их в другую, потом он должен определить следующую пустую строчку после только что заполненной, и например присвоить ей переменную "x", чтобы эту переменную поставить в формулу
...
Рейтинг: 0 / 0
04.04.2007, 08:09:18
    #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
04.04.2007, 08:10:15
    #34435904
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
pitdocСпасибо всем ответившим
Но задача немного в другом. Необходимо чётко получить адрес ячейки.
Т.е. макрос из одной таблици берёт данные и вставляет их в другую, потом он должен определить следующую пустую строчку после только что заполненной, и например присвоить ей переменную "x", чтобы эту переменную поставить в формулу
А вообще лучше всего файл выложить
...
Рейтинг: 0 / 0
04.04.2007, 10:29:07
    #34436292
pitdoc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
Вот файл,
в который из sheet2 в sheet1 вставляются значения,
вот необходимо вставить эти же значения только во 2 строчку
...
Рейтинг: 0 / 0
04.04.2007, 11:24:02
    #34436567
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
pitdocВот файл,
в который из sheet2 в sheet1 вставляются значения,
вот необходимо вставить эти же значения только во 2 строчку
Так они так свтявляются во вторую строчку!
Напишите конкретней что должно проиходить? когда необходимо определять следующую пустую строку? и что должно происходить после этого?
...
Рейтинг: 0 / 0
04.04.2007, 11:28:26
    #34436599
pitdoc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
столбец B:B на странице Sheet2 будет меняться каждый день, и каждый день необходимо переносить данные на страницу Sheet1, в новую строчку, т.е. ссегодня я перенесу данные из Sheet2(B:B) в Sheet1(A2:D2), завтра нужно будет перенести из Sheet2(B:B) в Sheet1(A3:D3) и т.д.
...
Рейтинг: 0 / 0
04.04.2007, 11:41:55
    #34436691
JimOrange
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
Вот что вышло...
Использовал функцию поиска последней занятой строки, описанной выше.
...
Рейтинг: 0 / 0
04.04.2007, 11:42:21
    #34436693
JimOrange
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
...
Рейтинг: 0 / 0
04.04.2007, 12:29:24
    #34436941
pitdoc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
JimOrange, you are #1!!!
работает, только мне бы хотелось VLOOKUP сохранить, потому что порядок и количество строчек может измениться
...
Рейтинг: 0 / 0
04.04.2007, 12:59:39
    #34437087
pitdoc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
Всё получилось!!!
Всем огромное спасибо за помощь!!
...
Рейтинг: 0 / 0
04.04.2007, 13:04:06
    #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
04.04.2007, 14:27:36
    #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
06.04.2007, 18:13:58
    #34444524
pitdoc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
всем спасибо,
всё что хотел вроде получилось,
вот только теперь захотел немного изменить и что-то не выходит(((
пример: на первой странице есть два значения для строки "test23", так вот я хотел чтобы значение для "test23" бралось после Section1. Применил вышенаписанную ф-ию, определил диапазон где надо искать да что-то ошибки выдаёт ((((
...
Рейтинг: 0 / 0
07.04.2007, 14:35:07
    #34445152
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
pitdocвсем спасибо,
всё что хотел вроде получилось,
вот только теперь захотел немного изменить и что-то не выходит(((
пример: на первой странице есть два значения для строки "test23", так вот я хотел чтобы значение для "test23" бралось после Section1. Применил вышенаписанную ф-ию, определил диапазон где надо искать да что-то ошибки выдаёт ((((

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

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

Ещё вариант первую строку не обязательно оставлять пустой, если начинать нужно сначала, во второй строке поставь "*"
...
Рейтинг: 0 / 0
07.04.2007, 15:56:11
    #34445213
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
Выложил файл с обоими вариантами.
Если есть возможность оставить пустой 1-ю строку в исходным данных лучше пользоваться наверное процедурой test1(), но можно и test2(). Вообщем сам посмотришь
...
Рейтинг: 0 / 0
09.04.2007, 15:53:26
    #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
09.04.2007, 16:19:33
    #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
09.04.2007, 16:23:27
    #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
09.04.2007, 16:24:13
    #34447812
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определение адреса ячейки
Точка тоже красная
...
Рейтинг: 0 / 0
09.04.2007, 17:23:13
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Определение адреса ячейки / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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