|
1 / 1 / 0
Регистрация: 09.12.2012
Сообщений: 38
|
|
Поиск одинаковых чисел в двух столбцах15.12.2012, 00:52. Показов 15074. Ответов 23
Метки нет (Все метки)
Excel
Доброго времени суток, форумчане! Извините что напрягаю, но вот в чем загвоздка: Необходимо найти одинаковые значения в столбцах к примеру А и B. Тобиж, выбрать первый элемент столбца - сравнить его со всеми элементами столбца В, после чего взять второй элемент столбца и сравнить опять таки его со всем элементами столбца В. Причем если найдет одинаковые то очистить данные ячейки. Надеюсь на вашу помощь, благодарю
0
|
|
| 15.12.2012, 00:52 | |
|
Ответы с готовыми решениями:
23
Поиск двух одинаковых чисел в двумерном массиве Поиск одинаковых элементов в двумерном массиве как в строках так и в столбцах Макрос поиска одинаковых чисел в столбцах и выделение их цветом |
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
| 15.12.2012, 02:45 | |
|
Тобишь, загоняем за один цикл элементы одного столбца в словарь, затем одним проходом по второму столбцу проверяем наличие в словаре и делаем дело (какое - не ясно...)
0
|
|
|
1 / 1 / 0
Регистрация: 09.12.2012
Сообщений: 38
|
||
| 15.12.2012, 04:21 [ТС] | ||
|
А так не проблема, могу даже пошагово тебе объяснить, только напиши
0
|
||
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
||
| 15.12.2012, 04:26 | ||
0
|
||
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
|
| 15.12.2012, 07:29 | |
|
KochI, а в одном столбце нужно искать одинаковые данные и удалять? Например, в столбце "A" берутся данные из ячейки и ищутся в столбце "B". Если найдены, то просматриваются ещё данные и в столбце "A" и удаляются и в столбце "A".
0
|
|
|
1 / 1 / 0
Регистрация: 09.12.2012
Сообщений: 38
|
||
| 15.12.2012, 14:06 [ТС] | ||
|
0
|
||
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
||||||
| 15.12.2012, 22:15 | ||||||
|
Пока задача не ясна - делать смысла нет.
Я уже выше написал алгоритм - столбец B в словарь, столбец A проверяем по словарю - имеем результат. Что дальше? Добавлено через 7 минут
0
|
||||||
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
||||||
| 16.12.2012, 06:46 | ||||||
|
Hugo121, а вот эта строка как читается? Что на конце строки?
0
|
||||||
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
| 16.12.2012, 14:16 | |
|
Где-то видел, что c 0& работает быстрее, чем с любым другим значением (или с пустой строкой). Поверил
0
|
|
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
||||||
| 16.12.2012, 14:27 | ||||||
|
Hugo121, а смысл этой строки какой?
0
|
||||||
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
| 16.12.2012, 14:31 | |
|
Хотя сейчас потестил на скорость серией по 26,71875 - время одинаковое 0&/i
Добавлено через 3 минуты Погуглил - первая тема: 0 is a number. Unfortunately, there are several number data types - Integer, Long, Single, Double, Currency, etc. With no data type identifier after the 0, it is implied to be of the native Integer (the default). Therefore this 0 is expressed as an Integer, which makes it a 16-bit 0. However, many API functions use Longs and you should not pass an Integer 0 into a Long (that's like putting M&Ms in a cookie jar!) You should pass a Long 0, which will be a 32-bit 0, as the function requests a 32-bit long long number. So, therefore you add a &: An & after a number or a variable means that it is a Long (which is 32-bits). 0& is a 32-bit 0. x& is a 32-bit variable (this is obsolete because it is better to Dim x As Long rather than Dim x& - the x As Long is clearly a long, and the x& is not obvious) &H is hexadecimal notation - used when functions are trying to show or set specific bit values - this is used when it would not be efficient to express a value in base 10 notation. For example: 0011 0000 1000 1101 (16-bit integer) these are often used to set bit flags. You can use a simple lookup table to convert this to hexadecimal &H308D (if you're like me, you've memorized it - it's only 16 numbers) It takes much more time to convert this to decimal. ![]() And you should be able to answer the last question on your own now. ![]() P.S. ByVal 0& is passed to an API parameter declared as Any to specify that you don't want to put anything there.
1
|
|
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
||
| 16.12.2012, 14:32 | ||
0
|
||
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
| 16.12.2012, 14:43 | |
|
До того, что именно нужно делать после нахождения соответствия - пока дело не дошло
![]() Добавлено через 8 минут Можно делать так - при нахождении соответствия сразу помечать на удаление значение в A (ну или сразу удалять, идя циклом снизу), и помечать item в словаре. Затем вторым циклом идём снизу по столбцу B и удаляем все значения, у которых в Item пометка. Если данных много, то быстрее заполнить пометками параллельный массив, затем его выгрузить рядом и по пометкам удалить отфильтрованные (любым способом). Конечно, проще это делать, если данные на разных листах. Если на одном - я бы просто отбирал нужное в другие массивы, затем их выгружал поверх исходных данных, затирая ненужные "хвосты".
0
|
|
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
|
| 16.12.2012, 14:55 | |
|
То есть символ & после нуля из сообщения #7 (строка 12) означает, что число ноль переводится в тип данных Long.
0
|
|
|
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 15
|
|
| 06.02.2013, 03:33 | |
|
Доброго времени суток.
Пытаюсь освоить VBA для решения простейших задач в Excel (используя примеры и гугл). Растолкуйте как понимать выражение: iLastrow = .Cells(Rows.Count, 2).End(xlUp).Row где iLastrow - имя переменной типа long ; можно назвать другим именем , например, ilr999 ? Cells(Rows.Count, 2) - координаты ячейки? ; Rows.Count - количество строк? xlUp - какая-то константа? в общем не пойму формат выражения iLastrow = .Cells(Rows.Count, 2).End(xlUp).Row или iLastrow = А . B . C . D по каким правилам сформировано выражение?
0
|
|
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
|
| 06.02.2013, 08:00 | |
|
Расшифровка команды:
iLastrow = .Cells(Rows.Count, 2).End(xlUp).Row Кликните здесь для просмотра всего текста
iLastrow - это переменная. Имя переменной может быть любое за исключением оределённых правил, которые есть в каждом сравочнике по VBA на русском языке;
.Cells - впереди точка означает, что данная строка кода относится к With ... End With; Rows.Count - количество строк на активном листе. Естественно, что в любой книге количество строк одинаково, если версии книги одинаковые. Под версиями книг я понимаю Excel 2003, Excel 2007; .Cells(Rows.Count, 2). - полностью это читается: ячейка, находящаяся в последней строке и втором столбце; End(xlUp) - это команда аналогичная сочетанию клавиш в программе Excel: Ctrl + стрелка вверх; Row - это номер строки ячейки на Excel-листе, в которую мы переместились с помощью команды End.
1
|
|
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
| 06.02.2013, 11:04 | |
|
В итоге получаем номер строки с последней заполненной ячейкой по второму столбцу.
Но есть свои но, которые в 99,99% случаев можно не учитывать: 1. если заполнена последняя ячейка столбца, то результат будет неверный. 2. если столбец вообще не заполнен, то результат аналогичен п. 1
1
|
|
|
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 15
|
||
| 07.02.2013, 00:43 | ||
|
где А . B . C . D - это последовательность команд/функций (внутренних Excel или написанных пользователем в VBA) ? или есть ограничения? Меня интересует общий случай построения подобных выражений (принцип построения). Подскажите еще про "With Sheets(1)....End With" , в части Sheets(1) ?
0
|
||
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
| 07.02.2013, 00:57 | |
|
Эти А . B . C . D не произвольны, а строго упорядочены:
от ячейки(строка, столбец) идем вверх (или может быть вниз/вправо/влево), от полученной ячейки берём значение строки. Sheets(1) - лист номер 1. Именно по порядку следования листов в книге. Любой лист - может быть лист макросов или диаграмм! Worksheets(1) - рабочий лист номер 1.
1
|
|
|
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 15
|
||
| 07.02.2013, 01:17 | ||
|
про это ("Любой лист - может быть лист макросов или диаграмм!") не понял
0
|
||
| 07.02.2013, 01:17 | |
|
Помогаю со студенческими работами здесь
20
Поиск .Find по двум полям в двух столбцах Поиск схожих значений в двух столбцах и перенос из первого на другой лист
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|