Страница 1 из 1

последняя запись, как узнать?

Добавлено: 16 мар 2005, 09:46
P@Sol
в одном файле N-строк, в другом M-строк...как поместить в третий файл n-ную строку из первого файла и m-ную - из второго?
записи в первый и второй файл постоянно добавляются

Добавлено: 16 мар 2005, 10:28
Zigi
Я бы сделал так:

Код: Выделить всё

    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
При условии что первая ячейка в строчках с данными всегда заполнена.

Добавлено: 16 мар 2005, 10:54
P@Sol
все бы хорошо, но я не знал/знаю vb....можно небольшой комментарий, извините...

да, и еще...данные ничанаются с 7 строки...

Добавлено: 16 мар 2005, 11:35
P@Sol
подскажите,плз, где в инете можно учебники почитать...

Добавлено: 17 мар 2005, 01:46
Naeel Maqsudov
Zigi, циклы не нужны!

НужныйЛист.Range("A1").CurrentRegion.Rows.Count - это и есть количество строк в непрерывной таблице (если этой непрерывной таблице принадлежит ячейка А1). Это гораздо быстрее цикла найдет последнюю строку в таблице.

Кроме того у предложенного Вами способа есть еще одна проблема. Представьте, что ячейка Cells(rowNum, 1) окажется пустой, но строка rowNum не является последней (например Cells(rowNum, 2) не пустая).

CurrentRegion решает и эту проблему.


в одном файле N-строк, в другом M-строк...как поместить в третий файл n-ную строку из первого файла и m-ную - из второго?
записи в первый и второй файл постоянно добавляются
P@Sol, не очень понял... В третьем файле всегда должно получаться 2 строки? Если так, то в принципе наверное можно и просто формулами обойтись (без VBA).

Добавлено: 17 мар 2005, 16:06
P@Sol
подробнее...на приере:
в первый файл запись в 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*.

Добавлено: 22 мар 2005, 15:39
P@Sol
Naeel Maqsudov, что можете посоветовать?

Добавлено: 26 мар 2005, 22:05
Naeel Maqsudov
Вот так вот в единственные за всю командировку полдня выходных вернешься с Мертвого моря да пойдешь на форум, а тут в форуме одни вопросы....
Господа, что тут кроме как у меня и спросить больше не у кого, как формулы пишутся?

Вобщем могу посоветовать следующее:

В первую колонку поместить строки вида "[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 в формулу можно прямо включить название книги и листа.