0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 7
|
||||||
1 | ||||||
Проблема с копированием ячеек24.05.2010, 17:32. Показов 1966. Ответов 11
Метки нет (Все метки)
задача следующая.
есть файл (book1), например такой структуры: A B C .... 1 25 2 23 3 4 21 . 45 . 67 . 34 . . и ещё один файл (book2), вот такой: A B C 1 12 1 2 13 2 3 24 3 . 23 5 . 25 8 . 21 9 34 7 45 12 67 01 . . . (в ячейках не обязателно числа, это так, для примера, есть просто пустые ячейки) задача: копируем ячейку А1(book1)(А1=25), ищем в book2 ячейку идентичную А1(book1)(это будет А5), смещение на 1 ячейку влево (это будет В5), копирование содеожимого В5, возврат в book1 в ячеку В1 вставляем содеожимое В5. И так далее...., в результате book1 должна принять вид: A B C .... 1 25 8 2 23 5 3 4 21 9 . 45 12 . 67 01 . 34 7 . написал вот это (цикла пока нет):
0
|
24.05.2010, 17:32 | |
Ответы с готовыми решениями:
11
Проблема с копированием на ФТП Перенос данных из Excel или таблицы Word в DataGridView простым копированием ячеек Проблема с копированием в буфер обмена проблема с копированием файлов на xubuntu |
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
|
||||||
24.05.2010, 20:15 | 2 | |||||
0
|
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 7
|
||||||
25.05.2010, 12:04 [ТС] | 3 | |||||
спасибо, работает, но до первой пустой ячейки, как только в бук1 встречаеться пустая ячейка - работа завершаеться.
я сделал вот так:
это в цикл, сделать проверку на пустые ячейки (если пусто, то сдвиг на 1 вниз....и. так далее до следующего значения, если это значение...ну скажем 'end' - то завершить)
0
|
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 7
|
|
25.05.2010, 12:07 [ТС] | 4 |
vlth у тебя красивей , ещё раз спасибо, я VBA начал рюхать только вчера утром
0
|
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
|
|
25.05.2010, 13:33 | 5 |
<как только в бук1 встречаеться пустая ячейка - работа завершаеться>
Так и было предусмотрено (исходя из условий задачи): Set MyRange1 = ThisWorkbook.Worksheets(1).Cells(1, 1).CurrentRegion (определили диапазон со значениями, присвоили объектной переменной ссылку на этот диапазон) lngRows1 = MyRange1.Rows.Count (подсчитали кол-во строк в диапазоне - т.е. от 'A1' вниз по столбцу до первой пустой ячейки)
0
|
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 7
|
||||||
25.05.2010, 14:47 [ТС] | 6 | |||||
это я понял, а как сделать так, что если ячейка пуста то вниз на одну и так далее, пока не будет со значением?
ещё, если в ячейке бук1 будет значение, которого нет в бук2, то при поиске выдаст ошибку и остановиться, а как сделать так, что бы в бук1 эта ячейка пометилась например красным и дальше продолжилось. сегодня ещё посидел, доработал немного свой, но что-то тоже не очень...вот что получилось (коряво, но пока только так):
0
|
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
|
|||||||||||
25.05.2010, 15:31 | 7 | ||||||||||
<как сделать так, что бы в бук1 эта ячейка пометилась например красным и дальше продолжилось>
Внося изменения в код, чтобы продемонстрировать ответ, увидел у себя опечатку: конечно же MyRange2 - это ПЕРВЫЙ столбец диапазона CurrentRegion. В остальном всё без изменений.
Для пропуска пустых ячеек можно использовать цикл Do-While со счётчиком строк. Например:
0
|
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 7
|
||||||
25.05.2010, 17:24 [ТС] | 8 | |||||
написал вот это, не обрабатываеться ошибка..почему не пойму, помогите найти
0
|
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 7
|
|
25.05.2010, 17:26 [ТС] | 9 |
выдаёт ошибку Object variable or With block variable not set (Error 91)
0
|
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
|
|
26.05.2010, 13:20 | 10 |
<Посмотрите, плиз, что не так, подскажите как правильно...>
Неправильно вместо управляющих структур For - Next, Do - Loop, For Each - Next, т.е. операторов условного перехода, использовать GoTo - оператор безусловного перехода.
0
|
0 / 0 / 0
Регистрация: 24.05.2010
Сообщений: 7
|
|
26.05.2010, 13:56 [ТС] | 11 |
я бы сказал....некарсиво, но не неправильно. Согласен, что переделать бы неплохо .
выяснил причину возникновения ошибки, если первого значения из бук1 нет в бук2, то вываливает ошибку (например а1=12, а в бук2 нет ячейки с таким значением), если же первое в бук1 есть в бук2 то всё ок, дальше работает нормально. Почему так - не пойму.
0
|
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
|
|
26.05.2010, 14:32 | 12 |
Неоправданное применение GoTo - признак дурного тона в программировании.
Это общепринятое мнение: код с GoTo трудночитаем и воспринимаем. Если хочешь, чтобы с твоим кодом работали другие люди, прислушайся к совету - максимально сократи кол-во GoTo. Кстати, 'другим' программистом можешь стать ты сам, попытавшись разобраться в своём проекте через какое-то время.
0
|
26.05.2010, 14:32 | |
26.05.2010, 14:32 | |
Помогаю со студенческими работами здесь
12
Проблема с копированием поля Body Проблема с копированием изображения в буфер обмена Проблема с копированием базы на другой сервер делаю БД копированием из другой. Проблема с высвечиваемым названием. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |