Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / работа с двумя книгами excel / 18 сообщений из 18, страница 1 из 1
02.08.2007, 18:48:16
    #34702462
seve
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
Здравствуйте, помогите, пожалуйста с написанием макроса, который освободит от рутинной работы.
Есть две книги excel -book1.xls (запрос) и bd.xls (база данных).

Коротко - необходимо найти одинаковые данные в обоих книгах, если таковые будут, то сделать пометку об этом.

В книге book1.xls есть столбец В, котором построчно внесены следующие данные

ячейка B1- green
ячейка B2- yellow
ячейка B3- red
ячейка B4- car
ячейка B5- ball
ячейка B6- job

далее необходимо значения каждой из этих ячеек проверить на наличие в базе данных - файлик bd.xls

В этом файле так же есть столбец B, в котором в ячейках данные записаны в следующем виде:

ячейка B1- green, yellow, blue, pink
ячейка B2- good, bad, pleasure
ячейка B3- fun, joy,
ячейка B4- bus, car, subway
ячейка B5- ball, clew, tangle

если находится совпадение, например, значение ячейки из B1 book1.xls "green" присутствует в B1 базе данных, то для отметки из базы данных в файл book1.xls копируется значение столбца D (в данном случае D1 "colors").
и так по всему столбцу.

Помогите, плз!
...
Рейтинг: 0 / 0
02.08.2007, 23:14:01
    #34702795
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
seveЗдравствуйте, помогите, пожалуйста с написанием макроса, который освободит от рутинной работы.
Есть две книги excel -book1.xls (запрос) и bd.xls (база данных).

Коротко - необходимо найти одинаковые данные в обоих книгах, если таковые будут, то сделать пометку об этом.

В книге book1.xls есть столбец В, котором построчно внесены следующие данные

ячейка B1- green
ячейка B2- yellow
ячейка B3- red
ячейка B4- car
ячейка B5- ball
ячейка B6- job

далее необходимо значения каждой из этих ячеек проверить на наличие в базе данных - файлик bd.xls

В этом файле так же есть столбец B, в котором в ячейках данные записаны в следующем виде:

ячейка B1- green, yellow, blue, pink
ячейка B2- good, bad, pleasure
ячейка B3- fun, joy,
ячейка B4- bus, car, subway
ячейка B5- ball, clew, tangle

если находится совпадение, например, значение ячейки из B1 book1.xls "green" присутствует в B1 базе данных, то для отметки из базы данных в файл book1.xls копируется значение столбца D (в данном случае D1 "colors").
и так по всему столбцу.

Помогите, плз!

а почему не формулой?

A B1green=ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ("*"&B1&"*";'C:\[BD.xls]Лист1'!$B:$B;0));ИНДЕКС('C:\[BD.xls]Лист1'!$D:$D;ПОИСКПОЗ("*"&B1&"*";'C:\[BD.xls]Лист1'!$B:$B;0));"")
...
Рейтинг: 0 / 0
06.08.2007, 15:35:56
    #34708166
seve
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
KL (XL), добрый день.
Спасибо большое! работает.

Остался уточняющий вопрос - по этой формуле подыскивается ближайшее совпадение, т.е.
если нужно слово "пар", а первым по поиску попадается ячейка, в которой есть слово "паровоз", то оно подходит под указанные критерии.
можно это исправить?
я пока нашел такой вариант:
в функции ПОИСКПОЗ(MATCH) первый параметр
"*"&B1&"*"
заменил на
"*"&" "&B1&","&"*"

Тогда, если необходимо найти именно слово "пар" в нескольких столбцах
паровоз, самолет, вертолет,
душ, пар, вода, снег,
воз, телега,
пар,
выбирается вторая строка, но при этом необходимо форматировать все сроки, что первые пара символов были пробелы и последний тоже пробел.
Может есть более простые более удобные варианты?

KL (XL), еще раз БОЛЬШОЕ спасибо!!
...
Рейтинг: 0 / 0
07.08.2007, 00:29:39
    #34709172
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
seveKL (XL), добрый день.
Спасибо большое! работает.

Остался уточняющий вопрос - по этой формуле подыскивается ближайшее совпадение, т.е.
если нужно слово "пар", а первым по поиску попадается ячейка, в которой есть слово "паровоз", то оно подходит под указанные критерии.
можно это исправить?
я пока нашел такой вариант:
в функции ПОИСКПОЗ(MATCH) первый параметр
"*"&B1&"*"
заменил на
"*"&" "&B1&","&"*"

Тогда, если необходимо найти именно слово "пар" в нескольких столбцах
паровоз, самолет, вертолет,
душ, пар, вода, снег,
воз, телега,
пар,
выбирается вторая строка, но при этом необходимо форматировать все сроки, что первые пара символов были пробелы и последний тоже пробел.
Может есть более простые более удобные варианты?

KL (XL), еще раз БОЛЬШОЕ спасибо!!

Боюсь, что в этом случае либо надо делать то, что ты уже сам нашел либо писать код с регулярными выражениями, а главное с открытием файла источника или импортированием данных с пом. MS Query или ADO.
...
Рейтинг: 0 / 0
07.08.2007, 01:08:18
    #34709185
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
Если не принципиально какую из строк найдет формула, то еще вот такой вариант:

=ИНДЕКС('C:\[BD.xls]Лист1'!$D:$D;ПОИСК(9E+307;ПОИСКПОЗ({"*, ";"*, ";""}&A1&{",*";"";",*"};'C:\[BD.xls]Лист1'!$B:$B;0)))

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
08.08.2007, 11:41:55
    #34713240
seve
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
KL (XL), спасибо.
разобрался;)

Можешь подсказать, как изменить цвет заливки ячейки А1 (или цвет шрифта), если, например, B1 не пустая?
...
Рейтинг: 0 / 0
08.08.2007, 11:52:43
    #34713287
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
Условное форматирование посмотри в справке!
...
Рейтинг: 0 / 0
08.08.2007, 20:17:03
    #34715297
seve
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
спасибо, посмотрел, но не по подходит (или у меня не получается).

Ситуация примерно такая:

в ячейку A1 вводим слово, идет проверка, после чего в ячейке B1 или появляется какое-нить значение, или же ячейка B1 остается пустой.
так вот хотелось бы теперь поиметь обратную связь, т.е в зависимости от того пустая ячейка B1 или нет, изменяется окраска ячейки A1.

Есть варианты?
...
Рейтинг: 0 / 0
08.08.2007, 21:40:43
    #34715362
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
- выбираем ячейку [A1]
- меню Формат-Условное форматирование...
- в Условии 1 в первом комбобоксе выбираем опцию Формула
- в поле для формулы пишем: =B1<>""
- жмем на кнопку Формат и выбираем нужное
- жмем на кнопку OK
- жмем на кнопку OK


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
09.08.2007, 11:48:13
    #34716354
seve
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
Спасибо, большое, ребята!!!!!
...
Рейтинг: 0 / 0
14.08.2007, 11:00:44
    #34725679
seve
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
Народ, подскажите, пожалуйста, как подсчитать кол-во запятых в столбце B?
...
Рейтинг: 0 / 0
14.08.2007, 11:42:55
    #34725852
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
seveНарод, подскажите, пожалуйста, как подсчитать кол-во запятых в столбце B?

Предлагаю как получилось у меня
Может можно и лучше
1)
Код: plaintext
=СУММПРОИЗВ(--(ПСТР($B$ 1 :$B$ 100 ;{ 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ; 10 ; 11 ; 12 ; 13 ; 14 ; 15 ; 16 ; 17 ; 18 ; 19 ; 20 }; 1 )=","))
,
вместо 1;2;3;4 - свои номера символов по порядку в слове ,в которых может встречаться запятая (разделитель точка с запятой указан для русской локали, см у себя разделитель столбцов в массиве)
2) Вместо массива констант использовать столбцы
Код: plaintext
=СУММПРОИЗВ(--(ПСТР($B$ 1 :$B$ 100 ;СТОЛБЕЦ(A1:T1); 1 )=","))
,
вместо СТОЛБЕЦ(A1:T1) выдели столько горизонтально расположенных ячеек сколько максимально может быть символов в ячейке столбца B:B
...
Рейтинг: 0 / 0
14.08.2007, 14:45:57
    #34726768
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
=СУММПРОИЗВ(ДЛСТР(B1:B100)-ДЛСТР(ПОДСТАВИТЬ(B1:B100;",";"")))

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
14.08.2007, 15:22:10
    #34726939
seve
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
Спасибо

автор
1)
=СУММПРОИЗВ(--(ПСТР($B$1:$B$100;{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20};1)=","))
,

Deggasad, эмм... может и работает.. только у меня в ячейке до 200символов и более...
поэтому воспользовался второй предложенной формулой.

KL (XL), спасибо работает!


оба варианта ок, только вот разница в вычисляже есть небольшая:
по формуле =СУММПРОИЗВ(--(ПСТР($B$1:$B$100;СТОЛБЕЦ(A1:T1);1)=",")) получается 11220.
A1:T1 заменил на A1:IS1
а по формуле =СУММПРОИЗВ(ДЛСТР(B1:B100)-ДЛСТР(ПОДСТАВИТЬ(B1:B100;",";""))) на сотню больше.
Это не критично, просто информация FYI. ;)
Большое спасибо, выручили!!!
...
Рейтинг: 0 / 0
14.08.2007, 16:04:58
    #34727147
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
seveоба варианта ок, только вот разница в вычисляже есть небольшая:
по формуле =СУММПРОИЗВ(--(ПСТР($B$1:$B$100;СТОЛБЕЦ(A1:T1);1)=",")) получается 11220.
A1:T1 заменил на A1:IS1
а по формуле =СУММПРОИЗВ(ДЛСТР(B1:B100)-ДЛСТР(ПОДСТАВИТЬ(B1:B100;",";""))) на сотню больше.

=СУММПРОИЗВ(--(ПСТР($B$1:$B$100;СТОЛБЕЦ(A1:T1);1)=",")) проверяет первые 20 знаков, т.к. СТОЛБЕЦ(A1:T1) = {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20}

seveЭто не критично, просто информация FYI. ;)

:-о

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
14.08.2007, 16:10:44
    #34727182
seve
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
я видел, автор предупредил.
поэтому и написал, что
A1:T1 заменил на A1:IS1
...
Рейтинг: 0 / 0
14.08.2007, 16:25:38
    #34727241
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
seveя видел, автор предупредил.
поэтому и написал, что
A1:T1 заменил на A1:IS1

значит весьма вероятно, что у тебя в столбце имеются тексты длиннее, чем 253 знака, а главное - есть запятые на позициях 254 и/или более.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
14.08.2007, 16:55:39
    #34727381
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с двумя книгами excel
KL (XL) =СУММПРОИЗВ(ДЛСТР(B1:B100)-ДЛСТР(ПОДСТАВИТЬ(B1:B100;",";"")))

KL
[MVP - Microsoft Excel]
хитро
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / работа с двумя книгами excel / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]