Здравствуйте знатоки Excel. Помогите с созданием макроса (не формулы). Посмотрел похожие темы на форуме. Решение макросом не нашел.
Суть в следующем. Есть таблица с 500-1000 строками. Необходимо сравнить данные ("1") в ячейках столбцов Д1, Д2, Д3 и в зависимости от их наличия в соответствующих ячейках, результат нужно внести в ячейки столбцов Р5 или Р6. Например (см. вложение) Если "1" стоит только в ячейке Д1 (или в ячейке Д2) и в ячейке Д3, то результат ("1") необходимо занести в ячейку Р5. Если "1" отсутствует в ячейках Д1 и Д2 (наличие "1" необходимо обязательно анализировать в этих ячейках), а в ячейке Д3 стоит "1", то результат ("1") необходимо занести в ячейку Р6. Спасибо.
Здравствуйте знатоки Excel. Помогите с созданием макроса (не формулы). Посмотрел похожие темы на форуме. Решение макросом не нашел.
Суть в следующем. Есть таблица с 500-1000 строками. Необходимо сравнить данные ("1") в ячейках столбцов Д1, Д2, Д3 и в зависимости от их наличия в соответствующих ячейках, результат нужно внести в ячейки столбцов Р5 или Р6. Например (см. вложение) Если "1" стоит только в ячейке Д1 (или в ячейке Д2) и в ячейке Д3, то результат ("1") необходимо занести в ячейку Р5. Если "1" отсутствует в ячейках Д1 и Д2 (наличие "1" необходимо обязательно анализировать в этих ячейках), а в ячейке Д3 стоит "1", то результат ("1") необходимо занести в ячейку Р6. Спасибо.-SVP-
Добрый день. В столбце Д3 "1" должна присутствовать всегда. Если вдруг она отсутствует, то хорошо бы было после выполнения макроса появилась информация, что в такой-то строке некорректная информация. По поводу "... если Д1 и Д2 =1", то такого быть не должно. Либо "1" присутствует в Д1, либо - в Д2. Ну и опять, если вдруг присутствуют "1" в обоих столбцах, то опять хорошо бы, чтобы появилась информация о некоректности данных в такой-то строке. Отсутствие "1" в первых двух столбцах означает, что ячейки пустые (не нуль, не прочерк). Спасибо.
Добрый день. В столбце Д3 "1" должна присутствовать всегда. Если вдруг она отсутствует, то хорошо бы было после выполнения макроса появилась информация, что в такой-то строке некорректная информация. По поводу "... если Д1 и Д2 =1", то такого быть не должно. Либо "1" присутствует в Д1, либо - в Д2. Ну и опять, если вдруг присутствуют "1" в обоих столбцах, то опять хорошо бы, чтобы появилась информация о некоректности данных в такой-то строке. Отсутствие "1" в первых двух столбцах означает, что ячейки пустые (не нуль, не прочерк). Спасибо.-SVP-
AlexM, добрый вечер. Я пока слабо разбираюсь в программировании макросов и поэтому хотел, чтобы Вы прокомментировали строки (прямо в макросе, если не сложно): iRow = Columns(1).SpecialCells(xlCellTypeLastCell).Row Range("E3").Resize(i - 1, 2) = PArr. И еще подскажите, как доработать макрос, чтобы в случае ошибки заливалась другим цветом не вся строка, а только последние две ячейки текущей строки и как, если можно, изменить цвет заливки. Спасибо.
AlexM, добрый вечер. Я пока слабо разбираюсь в программировании макросов и поэтому хотел, чтобы Вы прокомментировали строки (прямо в макросе, если не сложно): iRow = Columns(1).SpecialCells(xlCellTypeLastCell).Row Range("E3").Resize(i - 1, 2) = PArr. И еще подскажите, как доработать макрос, чтобы в случае ошибки заливалась другим цветом не вся строка, а только последние две ячейки текущей строки и как, если можно, изменить цвет заливки. Спасибо.-SVP-
[/vba] Определяется номер последней заполненной ячейки в столбце 1, т.е. в столбце А. Это нужно, чтобы определить диапазон, с которым будет работать макрос далее. DArr и PArr это два массива в которые записаны диапазоны из столбцов Д и Р Массив PArr пустой, так как в начале диапазон столбцов Р очищался. В цикле анализируются значения в массиве DArr и результат заносится в массив PArr. [vba]
Код
Range("E3").Resize(i - 1, 2) = PArr
[/vba] Этой строкой записывается массив PArr в диапазон столбцов Р. Resize(i - 1, 2) - это задается размер (количество строк и столбцов) диапазона куда записывается массив. Заливку делает не макрос, а условное форматирование. Закрашивание происходит если две ячейки в столбцах Р с пробелом. Макрос проставляет 1, пусто и пробел (если ошибка) Формула проставляет 1, 0 и пробел. На листе "Формулы в параметрах снята галочка "нулевые значения", чтобы нулей не было видно.
[/vba] Определяется номер последней заполненной ячейки в столбце 1, т.е. в столбце А. Это нужно, чтобы определить диапазон, с которым будет работать макрос далее. DArr и PArr это два массива в которые записаны диапазоны из столбцов Д и Р Массив PArr пустой, так как в начале диапазон столбцов Р очищался. В цикле анализируются значения в массиве DArr и результат заносится в массив PArr. [vba]
Код
Range("E3").Resize(i - 1, 2) = PArr
[/vba] Этой строкой записывается массив PArr в диапазон столбцов Р. Resize(i - 1, 2) - это задается размер (количество строк и столбцов) диапазона куда записывается массив. Заливку делает не макрос, а условное форматирование. Закрашивание происходит если две ячейки в столбцах Р с пробелом. Макрос проставляет 1, пусто и пробел (если ошибка) Формула проставляет 1, 0 и пробел. На листе "Формулы в параметрах снята галочка "нулевые значения", чтобы нулей не было видно.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Пятница, 22.03.2013, 20:59
AlexM, здравствуйте. Для понятия проблемы в качестве примера была предложена простая таблица. В реальности таблица содержит большое количество столбцов и у меня не получается пока реализовать предложенный макрос на большой таблице. Не могли бы Вы помочь. В реальности соответствия следующие: столбец А (из примера) соответствует W, В->X, C->AH, E->BD, F->BE. Из предыдущего сообщения по поводу окрашивания двух последних ячеек текущей строки (в случае некорректных данных) в данном макросе реализовать невозможно? Спасибо.
AlexM, здравствуйте. Для понятия проблемы в качестве примера была предложена простая таблица. В реальности таблица содержит большое количество столбцов и у меня не получается пока реализовать предложенный макрос на большой таблице. Не могли бы Вы помочь. В реальности соответствия следующие: столбец А (из примера) соответствует W, В->X, C->AH, E->BD, F->BE. Из предыдущего сообщения по поводу окрашивания двух последних ячеек текущей строки (в случае некорректных данных) в данном макросе реализовать невозможно? Спасибо.-SVP-
Очень жалко, что перед тем как задать вопрос вы не полностью прочли правила. Вот выдержка из правил - Обычно, чтобы понять и помочь - достаточно таблицы на 10-20 строк. - Но при этом старайтесь сохранить структуру, расположение таблиц, имена листов - аналогично оригиналу. - Если файл содержит конфиденциальную информацию - просто замените Ваши данные на нейтральные. Если бы сделали пример по правилам, этого вопроса могло и не быть. Окраску можно сделать как вы хотите. Давайте пример и пояснения. Сделать попробую.
Очень жалко, что перед тем как задать вопрос вы не полностью прочли правила. Вот выдержка из правил - Обычно, чтобы понять и помочь - достаточно таблицы на 10-20 строк. - Но при этом старайтесь сохранить структуру, расположение таблиц, имена листов - аналогично оригиналу. - Если файл содержит конфиденциальную информацию - просто замените Ваши данные на нейтральные. Если бы сделали пример по правилам, этого вопроса могло и не быть. Окраску можно сделать как вы хотите. Давайте пример и пояснения. Сделать попробую.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Это вернет последнюю строку в листе, где есть хотя бы форматирование
И даже более того -xlCellTypeLastCell вернет нижнюю правую ячейку листа, в которой когда-то что-то было (с момента последнего сохранения). И неважно, что сейчас там давно уже ничего нет - ни значений, ни форматирования.
Цитата (KuklP)
Это вернет последнюю строку в листе, где есть хотя бы форматирование
И даже более того -xlCellTypeLastCell вернет нижнюю правую ячейку листа, в которой когда-то что-то было (с момента последнего сохранения). И неважно, что сейчас там давно уже ничего нет - ни значений, ни форматирования._Boroda_
В начальном задании любой столбец или все из 5 могли быть пустыми. В последнем задании я даже не обратил внимание на столбец А, в котором есть порядковые номера. Можно заменить строку [vba]
В начальном задании любой столбец или все из 5 могли быть пустыми. В последнем задании я даже не обратил внимание на столбец А, в котором есть порядковые номера. Можно заменить строку [vba]
Всем добрый день. Вновь пытаюсь привязать макрос к таблице, но пока ничго не выходит. См. пример таблицы. После выполнения макроса правильный результат появляется только в строках со 2 по 8. А с 9 по 20 почему-то пусто (хотя тоже должны быть "1"). Если кто знает в чем проблема - подскажите. Спасибо.
Всем добрый день. Вновь пытаюсь привязать макрос к таблице, но пока ничго не выходит. См. пример таблицы. После выполнения макроса правильный результат появляется только в строках со 2 по 8. А с 9 по 20 почему-то пусто (хотя тоже должны быть "1"). Если кто знает в чем проблема - подскажите. Спасибо.-SVP-