Страница: 1 |
Вопрос: (Excel) Сравнение двух колонок | Добавлено: 14.01.07 00:55 |
Автор вопроса: ![]() |
Как выделить все значения колонки B зеленым цветом, значения которые есть в колонке А. Т.е. как определить, какие из значений в колонке B присутствуют в колонке А |
Ответы | Всего ответов: 12 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вечный Юзер! ICQ: uu@jabber.cz Вопросов: 120 Ответов: 3302 |
Профиль | Цитата | #1 | Добавлено: 14.01.07 01:03 |
Юзай функции ЯЧЕЙКА, ПОИСКПОЗ, ДВССЫЛ и АДРЕС. Кроме того на office.microsoft.com есть конкретный пример на подобную задачу. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 5 |
Профиль | Цитата | #2 | Добавлено: 14.01.07 01:03 |
а с помощью VBA можно сделать? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вечный Юзер! ICQ: uu@jabber.cz Вопросов: 120 Ответов: 3302 |
Профиль | Цитата | #3 | Добавлено: 14.01.07 01:05 |
С помощью ВБА можно сделать, но работать будет быстрее в виде функции |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 5 |
Профиль | Цитата | #4 | Добавлено: 14.01.07 01:08 |
Блин как я их только не пробовал, вообще не выходит! очень странно.. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вечный Юзер! ICQ: uu@jabber.cz Вопросов: 120 Ответов: 3302 |
Профиль | Цитата | #5 | Добавлено: 14.01.07 01:12 |
http://office.microsoft.com/ru-ru/excel/HP100704621049.aspx?pid=CH100799991049
И многое другое там же. Походи по релевантным ссылкам. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() Вечный Юзер! ICQ: uu@jabber.cz Вопросов: 120 Ответов: 3302 |
Профиль | Цитата | #6 | Добавлено: 14.01.07 01:12 |
Сперва добейся нормального поиска данных, потом займешься раскраской. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 5 |
Профиль | Цитата | #7 | Добавлено: 14.01.07 01:16 |
Мне кажется проще на Vba написать что-то вроде
Dim v_Rng As Range
Dim v_Sh As Worksheet Dim v_Cell As Range Dim v_Var As Double Set v_Sh = ActiveSheet Set v_Rng = Intersect(v_Sh.Columns(3), v_Sh.UsedRange) On Error Resume Next For Each v_Cell In v_Rng.Cells If v_Cell <> Empty Then v_Var = WorksheetFunction.Match(v_Cell, v_Sh.Columns(1), 0) If Err.Number <> 0 Then Err.Clear Else v_Cell.Interior.ColorIndex = 4 End If End If Next v_Cell Нажать на кнопку и все, а не мучаться с функциями и автозаполнением..ну как? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() Вечный Юзер! ICQ: uu@jabber.cz Вопросов: 120 Ответов: 3302 |
Профиль | Цитата | #8 | Добавлено: 14.01.07 01:17 |
Если данных немного, то можешь обойтись и перебором в цикле/ах.. а если их несколько десятков тысяч, то будут тормоза неземные. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 5 |
Профиль | Цитата | #9 | Добавлено: 14.01.07 01:23 |
Ну а с функциями...блин..не разбериха..пока |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 185 |
Web-сайт: Профиль | Цитата | #10 | Добавлено: 14.01.07 09:39 |
Если только выделить нужно, но лучше пользоваться условным форматированием.
Меню-Формат-Условное форматирование... Формулу в настройках условноо форматирования можно поставить типа =ЕНД(ПОИСКПОЗ(B1;A:A;ЛОЖЬ())) (это если в момент настройки курсор стоит в ячейке B1 и выделен весь столбец B (или нужная его часть)) |
Номер ответа: 11 Автор ответа: ![]() ![]() ICQ: 234458121 Вопросов: 38 Ответов: 107 |
Профиль | Цитата | #11 | Добавлено: 16.01.07 13:50 |
Вот и у меня есть вопрос по этой теме.
Есть 4 колонки. Нужно, пролистав все значения из колонки 1, найти совпадающие значения в колонке 3, затем сравнить значение колонок 2 и 4 той же строки и в случае их несовпадения записать значение колонки 4 в колонку 2. Я пользуюсь методом Find, но из-за цикла перебора всех значений в колонке 1 из оператора if для колонок 2 и 4 (я так думаю) работает ну очень долго. Значений по максимуму, все уникальные. Может, кто-то подскажет более оптимальное решение данной задачи. |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 185 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 16.01.07 15:35 |
Я не уверен, но какой-то существенной оптимизации может и не получиться. Можно попробовать воспользоваться вместо метода Find функцией Match... а перебор ячеек делать не по 1-ой, а по 3-ей колонке (производя поиск в 1-ой)... Результат будет тот же (если я верно понял задачу), но в этом случае не нужно будет организовывать продолжение поиска в колонке после обнаружения первого совпадения... как мне кажется:
Dim z As Long, cc As Range
On Error Resume Next For Each cc In ActiveSheet.UsedRange.Columns(3).Cells z = WorksheetFunction.Match(cc.Value, ActiveSheet.UsedRange.Columns(1), 0) If Err.Number = 0 Then If cc.Offset(0, 1).Value <> Cells(z, 2).Value Then cc.Offset(0, 1) = Cells(z, 2) Else Err.Clear End If Next При тестировании 2000 строк - время работы 1 секунда, а 65536 строк - около 6 мин. |
Страница: 1 |
|