![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 23.04.2009
Сообщений: 10
|
![]()
Здравствуйте.
Есть файл с двумя листами. В каждом нужно полностью выделить жирным шрифтом строки с одинаковым содержимым ячеек по столбцам Фамилия, Имя, Отчество, Сумма. Для ясности пример: Иванов Иван Иванович 20000 На каждом листе вся строка с этими значениями выделяется жирным шрифтом. Буду благодарен, если кто предложит как реализовать. |
![]() |
![]() |
![]() |
#2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
1) Делаем дополнительный столбец, в который пишем формулу типа =A1&B1&C1&D1 (столбец можно будет потом скрыть)
2) При помощи условного форматирования выделяем в нём жирным шрифтом повторяющиеся значения (на форуме куча примеров) 3) Копируем форматирование этого столбца на все столбцы PS: Можно сделать и макросом. Прикрепили бы файл - получили бы готовое решение... |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 23.04.2009
Сообщений: 10
|
![]()
Спасибо, но нужно именно макросом ... вот файл
|
![]() |
![]() |
![]() |
#4 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
Цитата:
Или в наши обязанности входит и выяснение всех подробностей? К примеру, строка Иванов Иван Иванович 20000 на Листе 1 Выделять жирным шрифтом такие же строки только на листе1? Или на листе2 тоже выделять? Но на листе2 у нас 2 строки с Ивановыми: 222 иванов иван иванович 34000 20000 222 иванов иван иванович 20000 25000 Которую из них выделять? Обе? Ни одной? Или как? К тому же, на втором листе появились дополнительные столбцы... Перечислите номера столбцов, которые должны обрабатываться в поисках повторяющихся значений на 1 и 2 листах. Макрос-то написать - дело 5 минут, а вот переписывать его после каждого уточнения нет ни малейшего желания. |
||
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 23.04.2009
Сообщений: 10
|
![]()
Пример он на то и пример, что он не совсем отражает реальную ситуацию.
Потому и нужен макрос, что 1. конкретного расположения столбцов нет, потому что они могут меняться местами, дополняться, удаляться. 2. Значения могут повторяться, нужны именно такие, чтобы удовлетворяли условиям на обоих листах 3. Условия тоже могут меняться. То есть вместо фамилии, имени, отчества, суммы могут быть например кол-во, разница, организация ... Нужен универсальный макрос. Ещё раз повторюсь, что не обязательно писать макрос, нужны идеи как задачу реализовать |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 23.04.2009
Сообщений: 10
|
![]()
Выделяется жирным шрифтом ВСЯ строка в обоих листах, где совпали значения по ФИО и сумме
|
![]() |
![]() |
![]() |
#7 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
К примеру, на одном листе в столбце Количество указано 20000, а на другом листе - 20000.00 По сути - одно и то же. А как должен реагировать на это макрос? И таких нюансов множество... Цитата:
http://www.programmersforum.ru/showthread.php?t=47714 Создаём коллекцию coll с повторяющимися записями: Код:
Потом по-новой перебираем все записи на всех листах, и, если такая запись присутствует в коллекции, - выделяем соответствующую строку жирным шрифтом. PS: Универсальный макрос бесплатно делать не буду - много времени займёт (придётся делать интерфейс для ввода обрабатываемых столбцов, и т.п.), да и непонятно, зачем всё это нужно...
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 03.05.2009 в 00:32. |
||
![]() |
![]() |
![]() |
#8 |
Заблокирован
Регистрация: 23.02.2009
Сообщений: 306
|
![]()
Реально, зачем усложнять себе жизнь, когда уже есть решение проблемы стандартными средствами Условного форматирования?
Вот пример без допстолбцов. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 23.04.2009
Сообщений: 10
|
![]()
EducatedFool, спасибо за информацию.
Написал тут по этому примеру кодик небольшой, не пойму с чем связано его не функционирование. Может кто сможет объяснить, буду благодарен. Главный вопрос почему массив не заполняется. По другим задачам всё работало ... И ещё один почему иногда подсвечивает эти две строки: Sheets("Лист1").Range(Cells(i, 1), Cells(i, Cols1 + Cols2)).Font.Bold = True Sheets("Лист2").Range(Cells(1, Cols2), Cells(Rows2, Cols2)).Font.Bold = True и выдаёт ошибку Run-time error '1004' Application-defined or object-defined error |
![]() |
![]() |
![]() |
#10 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Сейчас попробую разобраться.
Возможно, придётся серьёзно модифицировать код. Результат будет примерно через полчаса. Если есть Скайп - звоните, есть несколько вопросов по коду. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
форматирование строк и запись в файл | drVit | Общие вопросы C/C++ | 1 | 24.04.2009 20:18 |
форматирование | beygul | Помощь студентам | 13 | 07.02.2009 21:18 |
Матрица A состоит из 8 строк и 6 столбцов. вычесть из всех её строк, начиная со второй, первую строку | Dimak24 | Помощь студентам | 1 | 19.12.2008 15:45 |
Условное форматирование | ZORRO2005 | Microsoft Office Excel | 6 | 29.09.2008 16:46 |
Excel max 256 строк VS user надо 300 строк | Exo | Microsoft Office Excel | 3 | 10.01.2008 17:14 |