Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2009, 22:37   #1
Propan
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 10
По умолчанию Форматирование строк

Здравствуйте.
Есть файл с двумя листами. В каждом нужно полностью выделить жирным шрифтом строки с одинаковым содержимым ячеек по столбцам Фамилия, Имя, Отчество, Сумма.

Для ясности пример:
Иванов Иван Иванович 20000
На каждом листе вся строка с этими значениями выделяется жирным шрифтом.

Буду благодарен, если кто предложит как реализовать.
Propan вне форума Ответить с цитированием
Старый 02.05.2009, 22:49   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

1) Делаем дополнительный столбец, в который пишем формулу типа =A1&B1&C1&D1 (столбец можно будет потом скрыть)
2) При помощи условного форматирования выделяем в нём жирным шрифтом повторяющиеся значения (на форуме куча примеров)
3) Копируем форматирование этого столбца на все столбцы

PS: Можно сделать и макросом.
Прикрепили бы файл - получили бы готовое решение...
EducatedFool вне форума Ответить с цитированием
Старый 02.05.2009, 23:01   #3
Propan
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 10
По умолчанию

Спасибо, но нужно именно макросом ... вот файл
Вложения
Тип файла: rar 1.rar (7.8 Кб, 12 просмотров)
Propan вне форума Ответить с цитированием
Старый 02.05.2009, 23:52   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
нужно именно макросом
А чем формулы и условное форматирование не устраивают?

Цитата:
вот файл
А объяснения где?
Или в наши обязанности входит и выяснение всех подробностей?

К примеру, строка Иванов Иван Иванович 20000 на Листе 1
Выделять жирным шрифтом такие же строки только на листе1?

Или на листе2 тоже выделять?
Но на листе2 у нас 2 строки с Ивановыми:
222 иванов иван иванович 34000 20000
222 иванов иван иванович 20000 25000

Которую из них выделять? Обе? Ни одной? Или как?

К тому же, на втором листе появились дополнительные столбцы...
Перечислите номера столбцов, которые должны обрабатываться в поисках повторяющихся значений на 1 и 2 листах.

Макрос-то написать - дело 5 минут, а вот переписывать его после каждого уточнения нет ни малейшего желания.
EducatedFool вне форума Ответить с цитированием
Старый 03.05.2009, 00:14   #5
Propan
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 10
По умолчанию

Пример он на то и пример, что он не совсем отражает реальную ситуацию.
Потому и нужен макрос, что
1. конкретного расположения столбцов нет, потому что они могут меняться местами, дополняться, удаляться.
2. Значения могут повторяться, нужны именно такие, чтобы удовлетворяли условиям на обоих листах
3. Условия тоже могут меняться. То есть вместо фамилии, имени, отчества, суммы могут быть например кол-во, разница, организация ...

Нужен универсальный макрос. Ещё раз повторюсь, что не обязательно писать макрос, нужны идеи как задачу реализовать
Propan вне форума Ответить с цитированием
Старый 03.05.2009, 00:16   #6
Propan
Пользователь
 
Регистрация: 23.04.2009
Сообщений: 10
По умолчанию

Выделяется жирным шрифтом ВСЯ строка в обоих листах, где совпали значения по ФИО и сумме
Propan вне форума Ответить с цитированием
Старый 03.05.2009, 00:27   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Нужен универсальный макрос.
Это сложновато...
К примеру, на одном листе в столбце Количество указано 20000, а на другом листе - 20000.00
По сути - одно и то же. А как должен реагировать на это макрос?
И таких нюансов множество...

Цитата:
нужны идеи как задачу реализовать
Здесь можно посмотреть алгоритм:
http://www.programmersforum.ru/showthread.php?t=47714

Создаём коллекцию coll с повторяющимися записями:
Код:
For i = LBound(arr2) To UBound(arr2)
        If Trim$(arr2(i, 3)) <> "" Then
            v = Trim$(arr2(i, 1)) & "#" & Trim$(arr2(i, 2)) & "#" & Trim$(arr2(i, 3))
            Err.Clear: collTemp.Add v, v
            If Err.Number <> 0 Then coll.Add v, v
        End If
Next i
по принципу - все, что не удаётся добавить в коллекцию collTemp (в неё записываются только уникальные записи), добавляем в коллекцию coll

Потом по-новой перебираем все записи на всех листах, и, если такая запись присутствует в коллекции, - выделяем соответствующую строку жирным шрифтом.

PS: Универсальный макрос бесплатно делать не буду - много времени займёт (придётся делать интерфейс для ввода обрабатываемых столбцов, и т.п.), да и непонятно, зачем всё это нужно...

Последний раз редактировалось EducatedFool; 03.05.2009 в 00:32.
EducatedFool вне форума Ответить с цитированием
Старый 03.05.2009, 00:42   #8
IFRSoff
Заблокирован
 
Регистрация: 23.02.2009
Сообщений: 306
По умолчанию

Реально, зачем усложнять себе жизнь, когда уже есть решение проблемы стандартными средствами Условного форматирования?
Вот пример без допстолбцов.
Вложения
Тип файла: rar Книга22.rar (3.8 Кб, 25 просмотров)
IFRSoff вне форума Ответить с цитированием
Старый 03.05.2009, 22:17   #9
Propan
Пользователь
 
Регистрация: 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
Вложения
Тип файла: rar 2.rar (12.5 Кб, 13 просмотров)
Propan вне форума Ответить с цитированием
Старый 03.05.2009, 22:24   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Сейчас попробую разобраться.
Возможно, придётся серьёзно модифицировать код.
Результат будет примерно через полчаса.

Если есть Скайп - звоните, есть несколько вопросов по коду.
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форматирование строк и запись в файл 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