Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сравнение данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Сравнение данных
-SVP- Дата: Среда, 20.03.2013, 10:39 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте знатоки Excel.
Помогите с созданием макроса (не формулы). Посмотрел похожие темы на форуме. Решение макросом не нашел.

Суть в следующем.
Есть таблица с 500-1000 строками. Необходимо сравнить данные ("1") в ячейках столбцов Д1, Д2, Д3 и в зависимости
от их наличия в соответствующих ячейках, результат нужно внести в ячейки столбцов Р5 или Р6.
Например (см. вложение)
Если "1" стоит только в ячейке Д1 (или в ячейке Д2) и в ячейке Д3, то результат ("1") необходимо занести в ячейку Р5.
Если "1" отсутствует в ячейках Д1 и Д2 (наличие "1" необходимо обязательно анализировать в этих ячейках),
а в ячейке Д3 стоит "1", то результат ("1") необходимо занести в ячейку Р6.
Спасибо.
К сообщению приложен файл: 1879315.xlsm (10.7 Kb)
 
Ответить
СообщениеЗдравствуйте знатоки Excel.
Помогите с созданием макроса (не формулы). Посмотрел похожие темы на форуме. Решение макросом не нашел.

Суть в следующем.
Есть таблица с 500-1000 строками. Необходимо сравнить данные ("1") в ячейках столбцов Д1, Д2, Д3 и в зависимости
от их наличия в соответствующих ячейках, результат нужно внести в ячейки столбцов Р5 или Р6.
Например (см. вложение)
Если "1" стоит только в ячейке Д1 (или в ячейке Д2) и в ячейке Д3, то результат ("1") необходимо занести в ячейку Р5.
Если "1" отсутствует в ячейках Д1 и Д2 (наличие "1" необходимо обязательно анализировать в этих ячейках),
а в ячейке Д3 стоит "1", то результат ("1") необходимо занести в ячейку Р6.
Спасибо.

Автор - -SVP-
Дата добавления - 20.03.2013 в 10:39
AlexM Дата: Среда, 20.03.2013, 11:53 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Так подойдет?
К сообщению приложен файл: 1879315_new.xls (40.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеТак подойдет?

Автор - AlexM
Дата добавления - 20.03.2013 в 11:53
-SVP- Дата: Среда, 20.03.2013, 12:00 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Добрый день.
В столбце Д3 "1" должна присутствовать всегда. Если вдруг она отсутствует, то хорошо бы было после
выполнения макроса появилась информация, что в такой-то строке некорректная информация.
По поводу "... если Д1 и Д2 =1", то такого быть не должно. Либо "1" присутствует в Д1, либо - в Д2.
Ну и опять, если вдруг присутствуют "1" в обоих столбцах, то опять хорошо бы, чтобы появилась информация
о некоректности данных в такой-то строке.
Отсутствие "1" в первых двух столбцах означает, что ячейки пустые (не нуль, не прочерк).
Спасибо.
 
Ответить
СообщениеДобрый день.
В столбце Д3 "1" должна присутствовать всегда. Если вдруг она отсутствует, то хорошо бы было после
выполнения макроса появилась информация, что в такой-то строке некорректная информация.
По поводу "... если Д1 и Д2 =1", то такого быть не должно. Либо "1" присутствует в Д1, либо - в Д2.
Ну и опять, если вдруг присутствуют "1" в обоих столбцах, то опять хорошо бы, чтобы появилась информация
о некоректности данных в такой-то строке.
Отсутствие "1" в первых двух столбцах означает, что ячейки пустые (не нуль, не прочерк).
Спасибо.

Автор - -SVP-
Дата добавления - 20.03.2013 в 12:00
AlexM Дата: Среда, 20.03.2013, 12:49 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Еще вариант на проверку.
К сообщению приложен файл: 1879315_new1.xls (41.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЕще вариант на проверку.

Автор - AlexM
Дата добавления - 20.03.2013 в 12:49
-SVP- Дата: Среда, 20.03.2013, 14:45 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

AlexM, спасибо за предложенный вариант макроса.
Буду пробовать на основной таблице.
 
Ответить
СообщениеAlexM, спасибо за предложенный вариант макроса.
Буду пробовать на основной таблице.

Автор - -SVP-
Дата добавления - 20.03.2013 в 14:45
AlexM Дата: Четверг, 21.03.2013, 23:24 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Еще варианты
1. Макрос по кнопке
2. Макрос по событию
3. Формулы
К сообщению приложен файл: 1879315_new2.xls (50.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЕще варианты
1. Макрос по кнопке
2. Макрос по событию
3. Формулы

Автор - AlexM
Дата добавления - 21.03.2013 в 23:24
-SVP- Дата: Пятница, 22.03.2013, 20:26 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

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-
Дата добавления - 22.03.2013 в 20:26
AlexM Дата: Пятница, 22.03.2013, 20:58 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
iRow = Columns(1).SpecialCells(xlCellTypeLastCell).Row
[/vba]
Определяется номер последней заполненной ячейки в столбце 1, т.е. в столбце А.
Это нужно, чтобы определить диапазон, с которым будет работать макрос далее.
DArr и PArr это два массива в которые записаны диапазоны из столбцов Д и Р
Массив PArr пустой, так как в начале диапазон столбцов Р очищался.
В цикле анализируются значения в массиве DArr и результат заносится в массив PArr.
[vba]
Код
Range("E3").Resize(i - 1, 2) = PArr
[/vba]
Этой строкой записывается массив PArr в диапазон столбцов Р.
Resize(i - 1, 2) - это задается размер (количество строк и столбцов) диапазона куда записывается массив.
Заливку делает не макрос, а условное форматирование. Закрашивание происходит если две ячейки в столбцах Р с пробелом.
Макрос проставляет 1, пусто и пробел (если ошибка)
Формула проставляет 1, 0 и пробел. На листе "Формулы в параметрах снята галочка "нулевые значения", чтобы нулей не было видно.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Пятница, 22.03.2013, 20:59
 
Ответить
Сообщение[vba]
Код
iRow = Columns(1).SpecialCells(xlCellTypeLastCell).Row
[/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
Дата добавления - 22.03.2013 в 20:58
-SVP- Дата: Вторник, 26.03.2013, 10:24 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

AlexM, здравствуйте.
Для понятия проблемы в качестве примера была предложена простая таблица.
В реальности таблица содержит большое количество столбцов и у меня не получается пока
реализовать предложенный макрос на большой таблице. Не могли бы Вы помочь.
В реальности соответствия следующие: столбец А (из примера) соответствует W, В->X, C->AH, E->BD, F->BE.
Из предыдущего сообщения по поводу окрашивания двух последних ячеек текущей строки
(в случае некорректных данных) в данном макросе реализовать невозможно?
Спасибо.
 
Ответить
СообщениеAlexM, здравствуйте.
Для понятия проблемы в качестве примера была предложена простая таблица.
В реальности таблица содержит большое количество столбцов и у меня не получается пока
реализовать предложенный макрос на большой таблице. Не могли бы Вы помочь.
В реальности соответствия следующие: столбец А (из примера) соответствует W, В->X, C->AH, E->BD, F->BE.
Из предыдущего сообщения по поводу окрашивания двух последних ячеек текущей строки
(в случае некорректных данных) в данном макросе реализовать невозможно?
Спасибо.

Автор - -SVP-
Дата добавления - 26.03.2013 в 10:24
AlexM Дата: Вторник, 26.03.2013, 10:39 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Очень жалко, что перед тем как задать вопрос вы не полностью прочли правила.
Вот выдержка из правил
- Обычно, чтобы понять и помочь - достаточно таблицы на 10-20 строк.
- Но при этом старайтесь сохранить структуру, расположение таблиц, имена листов - аналогично оригиналу.
- Если файл содержит конфиденциальную информацию - просто замените Ваши данные на нейтральные.

Если бы сделали пример по правилам, этого вопроса могло и не быть.
Окраску можно сделать как вы хотите.
Давайте пример и пояснения. Сделать попробую.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеОчень жалко, что перед тем как задать вопрос вы не полностью прочли правила.
Вот выдержка из правил
- Обычно, чтобы понять и помочь - достаточно таблицы на 10-20 строк.
- Но при этом старайтесь сохранить структуру, расположение таблиц, имена листов - аналогично оригиналу.
- Если файл содержит конфиденциальную информацию - просто замените Ваши данные на нейтральные.

Если бы сделали пример по правилам, этого вопроса могло и не быть.
Окраску можно сделать как вы хотите.
Давайте пример и пояснения. Сделать попробую.

Автор - AlexM
Дата добавления - 26.03.2013 в 10:39
-SVP- Дата: Вторник, 26.03.2013, 11:12 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

AlexM
Во влож. файле приведена основная таблица.
Количество строк 500-1000.
Спасибо.
К сообщению приложен файл: 2781343.xls (25.5 Kb)
 
Ответить
СообщениеAlexM
Во влож. файле приведена основная таблица.
Количество строк 500-1000.
Спасибо.

Автор - -SVP-
Дата добавления - 26.03.2013 в 11:12
AlexM Дата: Вторник, 26.03.2013, 12:24 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
См.Файл
К сообщению приложен файл: 2781343_new.xls (44.5 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеСм.Файл

Автор - AlexM
Дата добавления - 26.03.2013 в 12:24
KuklP Дата: Вторник, 26.03.2013, 12:33 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Цитата (AlexM)
iRow = Columns(1).SpecialCells(xlCellTypeLastCell).Row

Алекс, осторожней! Это вернет последнюю строку в листе, где есть хотя бы форматирование smile
А не последнюю в 1-м столбце.
К сообщению приложен файл: 3657294.xls (22.0 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Вторник, 26.03.2013, 12:34
 
Ответить
Сообщение
Цитата (AlexM)
iRow = Columns(1).SpecialCells(xlCellTypeLastCell).Row

Алекс, осторожней! Это вернет последнюю строку в листе, где есть хотя бы форматирование smile
А не последнюю в 1-м столбце.

Автор - KuklP
Дата добавления - 26.03.2013 в 12:33
-SVP- Дата: Вторник, 26.03.2013, 12:48 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

AlexM, большое спасибо.
Буду пробовать.
 
Ответить
СообщениеAlexM, большое спасибо.
Буду пробовать.

Автор - -SVP-
Дата добавления - 26.03.2013 в 12:48
_Boroda_ Дата: Вторник, 26.03.2013, 13:19 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Цитата (KuklP)
Это вернет последнюю строку в листе, где есть хотя бы форматирование

И даже более того -xlCellTypeLastCell вернет нижнюю правую ячейку листа, в которой когда-то что-то было (с момента последнего сохранения). И неважно, что сейчас там давно уже ничего нет - ни значений, ни форматирования.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Цитата (KuklP)
Это вернет последнюю строку в листе, где есть хотя бы форматирование

И даже более того -xlCellTypeLastCell вернет нижнюю правую ячейку листа, в которой когда-то что-то было (с момента последнего сохранения). И неважно, что сейчас там давно уже ничего нет - ни значений, ни форматирования.

Автор - _Boroda_
Дата добавления - 26.03.2013 в 13:19
AlexM Дата: Вторник, 26.03.2013, 14:22 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Цитата (KuklP)
Это вернет последнюю строку в листе, где есть хотя бы форматирование

А чем заменить, если в таблице кроме форматирования ничего больше может не быть?
Я не случайно так сделал. Или есть другие варианты?



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Цитата (KuklP)
Это вернет последнюю строку в листе, где есть хотя бы форматирование

А чем заменить, если в таблице кроме форматирования ничего больше может не быть?
Я не случайно так сделал. Или есть другие варианты?

Автор - AlexM
Дата добавления - 26.03.2013 в 14:22
KuklP Дата: Вторник, 26.03.2013, 14:29 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Конкретно, что мы ищем? Последнее значение в столбце А, или последнюю строку со значением? В первом случае через End, во втором через find.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеКонкретно, что мы ищем? Последнее значение в столбце А, или последнюю строку со значением? В первом случае через End, во втором через find.

Автор - KuklP
Дата добавления - 26.03.2013 в 14:29
AlexM Дата: Вторник, 26.03.2013, 14:43 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
В начальном задании любой столбец или все из 5 могли быть пустыми.
В последнем задании я даже не обратил внимание на столбец А, в котором есть порядковые номера.
Можно заменить строку [vba]
Код
iRow = Columns(1).SpecialCells(xlCellTypeLastCell).Row
[/vba] на [vba]
Код
iRow = Columns(1).End(xlDown).Row
[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеВ начальном задании любой столбец или все из 5 могли быть пустыми.
В последнем задании я даже не обратил внимание на столбец А, в котором есть порядковые номера.
Можно заменить строку [vba]
Код
iRow = Columns(1).SpecialCells(xlCellTypeLastCell).Row
[/vba] на [vba]
Код
iRow = Columns(1).End(xlDown).Row
[/vba]

Автор - AlexM
Дата добавления - 26.03.2013 в 14:43
KuklP Дата: Вторник, 26.03.2013, 14:45 | Сообщение № 19
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Нужно smile


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНужно smile

Автор - KuklP
Дата добавления - 26.03.2013 в 14:45
-SVP- Дата: Четверг, 18.04.2013, 12:11 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Всем добрый день.
Вновь пытаюсь привязать макрос к таблице, но пока ничго не выходит.
См. пример таблицы. После выполнения макроса правильный результат появляется только
в строках со 2 по 8. А с 9 по 20 почему-то пусто (хотя тоже должны быть "1").
Если кто знает в чем проблема - подскажите.
Спасибо.
К сообщению приложен файл: 2712977.xls (43.5 Kb)
 
Ответить
СообщениеВсем добрый день.
Вновь пытаюсь привязать макрос к таблице, но пока ничго не выходит.
См. пример таблицы. После выполнения макроса правильный результат появляется только
в строках со 2 по 8. А с 9 по 20 почему-то пусто (хотя тоже должны быть "1").
Если кто знает в чем проблема - подскажите.
Спасибо.

Автор - -SVP-
Дата добавления - 18.04.2013 в 12:11
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!