|
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
|
|
Удалить строки, где данные в столбцах C,D,E на i равны данным этих же столцов из строки i-123.09.2010, 23:26. Показов 6000. Ответов 17
Метки нет (Все метки)
Здравствуйте.
Нужен макрос, выполняющих определенные действия (см. ниже). С VBA сталкивалась один раз, и уже мало что помню. Писать всё полностью не прошу, но может быть хотя бы подскажите, какие функции и команды понадобятся, потому как полностью изучать некогда. Задача макроса должна быть следующей. Есть таблица Excel с данными (числа). Нужно удалить строки, где данные в столбцах C,D,E на i равны данным этих же столцов из строки i-1;
0
|
|
| 23.09.2010, 23:26 | |
|
Ответы с готовыми решениями:
17
Определить длину строки,удалить из строки все символы, которые равны заданному
|
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
||||||
| 24.09.2010, 08:01 | ||||||
|
ну можно так:
1
|
||||||
|
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
|
|
| 24.09.2010, 10:02 [ТС] | |
|
Alex77755,спасибо за наводку. Логика правда будет чуть "посложнее", но думаю с условиями я разберусь.
Добавлено через 2 минуты А есть ли какая-то, чтобы определить количество заполненных строк на листе?
0
|
|
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
|||||||||||
| 24.09.2010, 10:55 | |||||||||||
|
Вариант 1.
1
|
|||||||||||
|
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
|
||||||
| 24.09.2010, 11:51 [ТС] | ||||||
|
Alex77755,спасибо))) Выручили))) Макрос написан. Он конечно весьма не универсален и есть свои нюансы, но для конкретных целей подошел, очень сэкономил время.
0
|
||||||
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
|
| 24.09.2010, 15:55 | |
|
Rows(i).SELECT можно не делать - при больших таблицах - тормоз
Зачем дополнительная переменная "i"? Есть же переменная цикла. К ней и привязывайся
1
|
|
|
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
|
||
| 24.09.2010, 18:38 [ТС] | ||
|
j - это переменная для перебора, т.е. зависящая от количества строк изначально. i - номер текущей строки для сравнения.
0
|
||
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
||||||
| 25.09.2010, 08:01 | ||||||
|
Если решила воспользоваться вторым вариантом, то вовсе не обязательно считать строки:
1
|
||||||
|
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
|
|
| 25.09.2010, 13:13 [ТС] | |
|
Alex77755,действительно проще и компактнее. Однако у меня есть несколько вопросов.
Во-первых, вы оба раза для удаления строки используете только метод delete, не выделяя при этом сначала строку, которую нужно удалить. У меня без select не работает удаление. Это у меня что-то не так, или от чего-то другого зависит? Во-вторых, волнует момент времени выполнения. Если при изначально 8000 строк - время выполнения макроса около 3 минут, то при 50000 - уже больше часа. Конечно в любом случае это намного быстрее и удобнее ручного перебора, но хочется разобраться. Одно из предположений, что удаляется в итоге около 95% строк, а при удалении строки все оставшиеся сдвигаются вверх. Так как одинаковые строки (одинаковые по трем столбцам) идут подряд, т.е. блоками, то возможно ли при проверке сначала выделять все одинаковые с i-ой строкой строки (как правило около 20-23 строк после нее) и только потом удалять этот блок. В итоге окажется, что функция delete будет использована раз в 20 меньше. Если я не права в своих рассуждениях - поправьте, пожалуйста. Или подскажите, за счет чего можно еще увеличить быстродействие.
0
|
|
|
Частенько бываю
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
|
|
| 25.09.2010, 13:56 | |
|
А вы бы выложили пример файлика было бы проще вам помочь.
1
|
|
|
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
|
|
| 25.09.2010, 14:20 [ТС] | |
|
Vlanib,без проблем. Правда я удалила ряд лишних столбцов, которые не используются при проверке. При таком раскладе время выполнения - 37 сек у меня.
0
|
|
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
||||||
| 25.09.2010, 20:55 | ||||||
|
При таком количестве могу сказать однозначно - надо считать всё в массив и работать с массивом.
Добавлено через 2 часа 11 минут
1
|
||||||
|
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
|
|
| 25.09.2010, 22:00 [ТС] | |
|
Alex77755,ругается на Лист1.Select
Это тот лист, с которого данные считываются? Пытаюсь подставить своё название, все равно выдает ошибку Object required
0
|
|
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
|
| 25.09.2010, 22:04 | |
|
Зашел с другого броузера
Смотри вложение
1
|
|
|
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
|
|
| 25.09.2010, 22:15 [ТС] | |
|
Alex77755,да, ваш вариант работает отлично и главное оч быстро) Буду разбираться теперь, что к чему до конца. Спасибо большое)))
0
|
|
|
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 5
|
||||||
| 30.05.2012, 17:09 | ||||||
|
Ребята, а как реализовать такое с удалением определенных ячеек?
Есть таблица в csv
0
|
||||||
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
|
| 30.05.2012, 17:19 | |
|
Выделяешь последнее слово и сравниваешь с предыдущим
0
|
|
|
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 5
|
||||||
| 30.05.2012, 17:41 | ||||||
|
В смысле? Всего 6000 строк в таблице. Нужен макрос.
Есть такое решение, но ещё не проверял, может взгляните:
0
|
||||||
| 30.05.2012, 17:41 | |
|
Помогаю со студенческими работами здесь
18
Найти в матрице строки, где все элементы равны нулю Вычислить произведение элементов в столбцах с нечетным номером; удалить второй элемент первой строки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|