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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2017, 12:38   #11
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 38
По умолчанию

Ваш макрос работает. Плохо то, что в мои 71 вряд ли успею изучить VBA и разобраться.
Пожалуйста, ответьте:
сложно ли задавать (менять) расположение результатов на поле (сдвигать вправо)?
сложно ли размещать ответы на другом листе?
возможно ли выдавать результат в виде выделенных номеров строк на другом листе?
Aristarkch вне форума Ответить с цитированием
Старый 11.03.2017, 18:30   #12
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

Ячейки с номерами строк теперь с выделением.
Так надо?
Вложения
Тип файла: xls ПРИМЕР ДЛЯ ФОРУМА_04.xls (69.5 Кб, 14 просмотров)
Алексей М.

Последний раз редактировалось AlexM12; 11.03.2017 в 18:33.
AlexM12 вне форума Ответить с цитированием
Старый 12.03.2017, 04:36   #13
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 38
По умолчанию

Не работает заливка в 25 строке. Для проверки я добавил единицу и в 26 строку (AE26) и в ней не работает.
Aristarkch вне форума Ответить с цитированием
Старый 12.03.2017, 10:16   #14
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

Прикрепляйте файл, в котором неправильно работает макрос.
В АЕ26 единицу может проставить формула, поэтому я не понимаю как вы проставили ее в эту ячейку
Еще доработанный вариант.
Вложения
Тип файла: xls ПРИМЕР ДЛЯ ФОРУМА_05.xls (70.5 Кб, 14 просмотров)
Алексей М.

Последний раз редактировалось AlexM12; 12.03.2017 в 10:36. Причина: Добавил файл.
AlexM12 вне форума Ответить с цитированием
Старый 12.03.2017, 12:16   #15
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 38
По умолчанию

Красиво смотрится!
В AE26 я и "вставил" единицу через формулу.
Начну разбираться с VBA и макросами, т.к. выставленный на форум файл - усеченный (для удобства представления на форуме) вариант большого рабочего файла, в котором количество столбцов будет наращиваться примерно до 150. Поэтому думаю о том, смогу ли полученное Вами решение "механически" растянуть в три раза и поэтому для меня не праздный вопрос: почему, если Вам не сложно ответить, глючила 25 строка?
Благодарен Вам за решение, ведь это мой первый выход на форум в инете и Вы первый, кто помог мне.
А еще у меня пока не получается перенос макроса в другие файлы.
Aristarkch вне форума Ответить с цитированием
Старый 12.03.2017, 14:42   #16
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

Как переносить в дугой файл, если размер и положение таблицы точно такое же.
1. ПКМ кликнуть по ярлычку листа. Выбрать пункт "Исходный текст"
Откроется модуль листа проекта VBA с именем книги в редакторе VBA.
2. Копировать код макроса в этом модуле.
3. В новой книге выполнить пункт 1
4. В модуль листа вставить код.
5. Закрыть редактор VBA
6. Сохранить файл.
7. Проверить работу.

Если таблица больше редактируем код
В строке Range("A1:AN18").Interior.ColorInde x = 0
Указан диапазон в котором работает выделение цветом
Конкретно эта строка снимает выделение.
В этой строке меняется диапазон на такой, как в новой таблице. А в строке For i = 1 To 18 18 меняют на число строк нового диапазона.
В строке If Not Intersect(Range("B20:AN37"), Target) Is Nothing Then задан диапазон, в котором макрос выполняет заданные действия. И этот диапазон надо изменить.

Почему глючила 25 строка. В предыдущем коде проверялось наличие единиц в том столбце где кликаем по ячейке и еще и еще в двух. Из формулы извлекались адреса только двух ячеек и определялись номера столбцов. Такой подход дал ошибку в 25 строке.
В новом коде определяется три адреса из формулы.
Алексей М.
AlexM12 вне форума Ответить с цитированием
Старый 19.03.2017, 06:30   #17
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 38
По умолчанию

Здравствуйте!
Развитие моей задачи. На примере.
Допустим, активна ячейка AM34 (оранжевая) и, соответственно, выделены строки 8 и 14.
Требуется в заданном (выбранном) столбце другого листа выставить единицы в 8 и 14 строках.

Еще вопрос: в строке
sm2 = Range(sm(4)).Column - Target.Column

sm(4) корректно?

Последний раз редактировалось Aristarkch; 19.03.2017 в 10:51.
Aristarkch вне форума Ответить с цитированием
Старый 19.03.2017, 09:15   #18
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

sm - массив адресов ячеек в текстовом формате.
Как он получается. Рассмотрим на примере выделения ячейки АМ34.
Target.Formula - возвращает формулу из ячейки АМ34, =СУММПРОИЗВ(AM$1:AM$18*X$1:X$18*W$1 :W$18)
Replace заменяет знаки умножения на двоеточие. Получаем =СУММПРОИЗВ(AM$1:AM$18:X$1:X$18:W$1 :W$18)
Функция Split делит формулу на части по разделителю двоеточие.
Получаем массив подстрок
=СУММПРОИЗВ(AM$1 AM$18 X$1 X$18 W$1 W$18)
Номера элементов массива начинаются с нуля.
В макросе используем элемент sm(1) - AM$18, sm(2) - X$1 и sm(4) - W$1
sm0-sm2 - это смещение столбца относительно столбца выделенной ячейки АМ34
Значения смещения нужны для определения столбца, в котором искать единички и подкрашивать их.
Развитие задачи не понял. Конкретно фразу "Требуется в заданном (выбранном) столбце другого листа выставить единицы в 8 и 14 строках".
В предыдущей задачи выделяем ячейку на листе2 и там же подкрашиваем.
А тут выделяем в столбце другого листа.
Попробуйте объяснить подробно, так как я подробно расписал что делает всего одна строка кода sm = Split(Replace(Target.Formula, "*", ":"), ":")
Алексей М.
AlexM12 вне форума Ответить с цитированием
Старый 19.03.2017, 10:35   #19
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 38
По умолчанию Выделение строк

Удалил один ненужный лист и поэтому снова прикладываю файл уже с двумя листами.
На первом листе я выделяю ЛК в диапазоне B20:AN37 любую единичную ячейку, например, AM34 - показана оранжевой заливкой. При этом в диапазоне A1:AN18 заливаются зеленкой ячейки, лежащие в 8 и 14 строках, в том числе, A8 и A14.
Мне требуется, чтобы на другом листе (у нас это второй лист) также выделились бы 8 и 14 строки.
Лучшим вариантом выделения 8 и 14 строк на втором листе для меня была бы запись единицы в 8 строку и запись единицы в 14 строку одного из столбцов. Например, в ячейку A8 второго листа записывается единица и в ячейку A14 второго листа записывается единица. Т.е. на первом листе ячейки A8 и A14 залиты, а на втором листе в них единицы.
Но еще лучше, чтобы столбец для записи единиц во втором листе можно было задавать (чтобы это был не обязательно первый столбец A) и чтобы можно было задавать и другой лист для записи (чтобы это был не обязательно второй лист).
Предполагается, что выделения (единицы) на другом листе снимаются синхронно с выделениями на первом листе.
Вложения
Тип файла: xls ПРИМЕР ДЛЯ ФОРУМА 2 МОЙ.xls (57.5 Кб, 11 просмотров)
Aristarkch вне форума Ответить с цитированием
Старый 19.03.2017, 11:04   #20
AlexM12
Форумчанин
 
Аватар для AlexM12
 
Регистрация: 29.08.2012
Сообщений: 209
По умолчанию

Все реально сделать. Только есть вопрос.
Как вы планируете задавать в каком столбце и на каком листе ставить единички?
Последняя фраза не совсем понятна. Надо ставить и убирать единицы или еще выделять цветом и снимать выделение?
Алексей М.
AlexM12 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение строк Aristarkch Microsoft Office Excel 12 07.03.2017 17:09
Выделение позиций(строк) PayPinki C++ Builder 1 31.01.2013 10:11
Выделение строк в Мемо Zuba C++ Builder 1 28.04.2012 13:11
выделение строк ruavia3 Microsoft Office Excel 2 26.08.2009 13:36
Выделение строк с... по - в SynEdit Noor Общие вопросы Delphi 2 29.12.2007 12:41