|
1 / 1 / 0
Регистрация: 09.12.2012
Сообщений: 38
|
|
Поиск одинаковых чисел в двух столбцах15.12.2012, 00:52. Показов 15173. Ответов 23
Метки нет (Все метки)
Excel
Доброго времени суток, форумчане! Извините что напрягаю, но вот в чем загвоздка: Необходимо найти одинаковые значения в столбцах к примеру А и B. Тобиж, выбрать первый элемент столбца - сравнить его со всеми элементами столбца В, после чего взять второй элемент столбца и сравнить опять таки его со всем элементами столбца В. Причем если найдет одинаковые то очистить данные ячейки. Надеюсь на вашу помощь, благодарю
0
|
|
| 15.12.2012, 00:52 | |
|
Ответы с готовыми решениями:
23
Поиск двух одинаковых чисел в двумерном массиве Поиск одинаковых элементов в двумерном массиве как в строках так и в столбцах Макрос поиска одинаковых чисел в столбцах и выделение их цветом |
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 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
|
||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 15.12.2012, 22:15 | ||||||
|
Пока задача не ясна - делать смысла нет.
Я уже выше написал алгоритм - столбец B в словарь, столбец A проверяем по словарю - имеем результат. Что дальше? Добавлено через 7 минут
0
|
||||||
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
||||||
| 16.12.2012, 06:46 | ||||||
|
Hugo121, а вот эта строка как читается? Что на конце строки?
0
|
||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 16.12.2012, 14:16 | |
|
Где-то видел, что c 0& работает быстрее, чем с любым другим значением (или с пустой строкой). Поверил
0
|
|
|
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
|
||||||
| 16.12.2012, 14:27 | ||||||
|
Hugo121, а смысл этой строки какой?
0
|
||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 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
|
||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 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
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 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
|
||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 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 по двум полям в двух столбцах Поиск схожих значений в двух столбцах и перенос из первого на другой лист
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|