последняя запись, как узнать?
Модератор: Naeel Maqsudov
в одном файле N-строк, в другом M-строк...как поместить в третий файл n-ную строку из первого файла и m-ную - из второго?
записи в первый и второй файл постоянно добавляются
записи в первый и второй файл постоянно добавляются
Я бы сделал так:
При условии что первая ячейка в строчках с данными всегда заполнена.
Код: Выделить всё
Dim rowNum As Long
rowNum = 1
While Not (IsEmpty(Cells(rowNum, 1)))
rowNum = rowNum + 1
Wend
Rows((rowNum - 1) & ":" & (rowNum - 1)).Select
Selection.Copy
Windows("Êíèãà2").Activate
Rows("1:1").Select
ActiveSheet.Paste
все бы хорошо, но я не знал/знаю vb....можно небольшой комментарий, извините...
да, и еще...данные ничанаются с 7 строки...
да, и еще...данные ничанаются с 7 строки...
подскажите,плз, где в инете можно учебники почитать...
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Zigi, циклы не нужны!
НужныйЛист.Range("A1").CurrentRegion.Rows.Count - это и есть количество строк в непрерывной таблице (если этой непрерывной таблице принадлежит ячейка А1). Это гораздо быстрее цикла найдет последнюю строку в таблице.
Кроме того у предложенного Вами способа есть еще одна проблема. Представьте, что ячейка Cells(rowNum, 1) окажется пустой, но строка rowNum не является последней (например Cells(rowNum, 2) не пустая).
CurrentRegion решает и эту проблему.
НужныйЛист.Range("A1").CurrentRegion.Rows.Count - это и есть количество строк в непрерывной таблице (если этой непрерывной таблице принадлежит ячейка А1). Это гораздо быстрее цикла найдет последнюю строку в таблице.
Кроме того у предложенного Вами способа есть еще одна проблема. Представьте, что ячейка Cells(rowNum, 1) окажется пустой, но строка rowNum не является последней (например Cells(rowNum, 2) не пустая).
CurrentRegion решает и эту проблему.
P@Sol, не очень понял... В третьем файле всегда должно получаться 2 строки? Если так, то в принципе наверное можно и просто формулами обойтись (без VBA).в одном файле N-строк, в другом M-строк...как поместить в третий файл n-ную строку из первого файла и m-ную - из второго?
записи в первый и второй файл постоянно добавляются
подробнее...на приере:
в первый файл запись в 7 и 8 ячейке в столбцах B,C (7b, 7c, 8b, 8c)
во втором файле запись 7,8,9,10 ячейке в столбцах B,C(7b, 7c, 8b, 8c, 9b, 9c, 10b, 10c)
...
в k файле запись в 7 ячейке в столбцах B,C (7b, 7c, 8b, 8c)
надо сделать (k+1) файл, в котором будет в строке выводится данные из последних строк других файлов:
A B C
1 8b 8c
2 10b 10c
...
k 8b 8c
а если позже добавить в первый файл 9 строчку (9b, 9c), то в (k+1) файле становится:
A B C
1 9b 9c
2 10b 10c
...
k 8b 8c
проверять на добавлением новых файлов не надо, т.е. если появится еще один файл k* с данными, то в файле (k+1) надо просто в ручную добавить что-то(формулу, макрос), чтобы следить за изменением данных в новом файле k*.
в первый файл запись в 7 и 8 ячейке в столбцах B,C (7b, 7c, 8b, 8c)
во втором файле запись 7,8,9,10 ячейке в столбцах B,C(7b, 7c, 8b, 8c, 9b, 9c, 10b, 10c)
...
в k файле запись в 7 ячейке в столбцах B,C (7b, 7c, 8b, 8c)
надо сделать (k+1) файл, в котором будет в строке выводится данные из последних строк других файлов:
A B C
1 8b 8c
2 10b 10c
...
k 8b 8c
а если позже добавить в первый файл 9 строчку (9b, 9c), то в (k+1) файле становится:
A B C
1 9b 9c
2 10b 10c
...
k 8b 8c
проверять на добавлением новых файлов не надо, т.е. если появится еще один файл k* с данными, то в файле (k+1) надо просто в ручную добавить что-то(формулу, макрос), чтобы следить за изменением данных в новом файле k*.
Naeel Maqsudov, что можете посоветовать?
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Вот так вот в единственные за всю командировку полдня выходных вернешься с Мертвого моря да пойдешь на форум, а тут в форуме одни вопросы....
Господа, что тут кроме как у меня и спросить больше не у кого, как формулы пишутся?
Вобщем могу посоветовать следующее:
В первую колонку поместить строки вида "[C:\qwe\book1.xls]Sheet1" (Ширину этой колонки можно установить нулевой, чтобы она была не видна. Она будет использоваться при добавлении новой строки - копируем формулы вниз, а затем указываем с какой книгой они будут работать.
Так как данные везде начинаются с 7-й строки, то во всех формулах указывается смещение "+6".
Так как пропусков нет (в певой колонке исходных данных лежат номера строк), то для вычисления номера интересующей нас строки будем использовать СЧЕТЗ(A7:A65535)
Вот формулы ячеек C1 и D1 (в столбце В будут номера строк 1, 2, 3...):
=CELL("contents";INDIRECT(ADDRESS(COUNTA(INDIRECT(A$1&"!A7:A65535"))+6;2;1;TRUE;$A1)))
=CELL("contents";INDIRECT(ADDRESS(COUNTA(INDIRECT(A$1&"!A7:A65535"))+6;3;1;TRUE;$A1)))
(У меня сейчас нет под рукой ничего русифицированного, так что найдите у себя файл funcs.xls и переведите названия функций)
2 и 3 в конце этих формул указывают из какой колонки взять данные, а COUNTA(INDIRECT(A$1&"!A7:A65535"))+6 вычисляет номер строки. В A1 находится строка с именем книги и листа. Впрочем, если не хотите занимать столбец А, вместо $A1 в формулу можно прямо включить название книги и листа.
Господа, что тут кроме как у меня и спросить больше не у кого, как формулы пишутся?
Вобщем могу посоветовать следующее:
В первую колонку поместить строки вида "[C:\qwe\book1.xls]Sheet1" (Ширину этой колонки можно установить нулевой, чтобы она была не видна. Она будет использоваться при добавлении новой строки - копируем формулы вниз, а затем указываем с какой книгой они будут работать.
Так как данные везде начинаются с 7-й строки, то во всех формулах указывается смещение "+6".
Так как пропусков нет (в певой колонке исходных данных лежат номера строк), то для вычисления номера интересующей нас строки будем использовать СЧЕТЗ(A7:A65535)
Вот формулы ячеек C1 и D1 (в столбце В будут номера строк 1, 2, 3...):
=CELL("contents";INDIRECT(ADDRESS(COUNTA(INDIRECT(A$1&"!A7:A65535"))+6;2;1;TRUE;$A1)))
=CELL("contents";INDIRECT(ADDRESS(COUNTA(INDIRECT(A$1&"!A7:A65535"))+6;3;1;TRUE;$A1)))
(У меня сейчас нет под рукой ничего русифицированного, так что найдите у себя файл funcs.xls и переведите названия функций)
2 и 3 в конце этих формул указывают из какой колонки взять данные, а COUNTA(INDIRECT(A$1&"!A7:A65535"))+6 вычисляет номер строки. В A1 находится строка с именем книги и листа. Впрочем, если не хотите занимать столбец А, вместо $A1 в формулу можно прямо включить название книги и листа.