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

Вход

Регистрация

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

 

= Мир MS Excel/поиск двух и более значений с последующим их копированием - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск двух и более значений с последующим их копированием (Макросы Sub)
поиск двух и более значений с последующим их копированием
Andrej092 Дата: Среда, 26.02.2014, 11:54 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Добрый день.
Есть такая задача, надо значения которые в колонке А:А найти в колонке D:D и найдя скопировать цены соответствующие названию. Названия в колонке А:А могут повторятся, значит поиск должет осуществлятся дважды. Но проблема в том что, если в колонке А:А есть занчение которого нет в D:D то тогда вылетает Error, а надо чтоб он автоматически переходил к поиску следующей ячейки в колоне А:А , а эту в B:B оставил пустой(в моём варианте ячейка B9). Пробовал через If.. Then... , но что-то не получается. Искал в поиске но никак не могу подобрать мне нужный вариант.

Писал ' On Error Resume Next , но тогда он копирует последнее найденное значение а не оставляет ячейку пустой

Подсобите, направте в нужном направлении.

Спасибо за ранее :)
К сообщению приложен файл: 112.xlsm (61.4 Kb)


:)
 
Ответить
СообщениеДобрый день.
Есть такая задача, надо значения которые в колонке А:А найти в колонке D:D и найдя скопировать цены соответствующие названию. Названия в колонке А:А могут повторятся, значит поиск должет осуществлятся дважды. Но проблема в том что, если в колонке А:А есть занчение которого нет в D:D то тогда вылетает Error, а надо чтоб он автоматически переходил к поиску следующей ячейки в колоне А:А , а эту в B:B оставил пустой(в моём варианте ячейка B9). Пробовал через If.. Then... , но что-то не получается. Искал в поиске но никак не могу подобрать мне нужный вариант.

Писал ' On Error Resume Next , но тогда он копирует последнее найденное значение а не оставляет ячейку пустой

Подсобите, направте в нужном направлении.

Спасибо за ранее :)

Автор - Andrej092
Дата добавления - 26.02.2014 в 11:54
Hugo Дата: Среда, 26.02.2014, 12:21 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Вообще-то конкретно здесь достаточно записать рекордером "протяжку" корректной ВПР() (с обработкой ошибки), затем замена формул на значения - получите готовый макрос.
А в теории (и для большого количества данных) нужно делать на массивах и словаре - поищите коды по сочетанию scripting.dictionary - подойдёт любой.

И никаких .Select - это лишнее.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВообще-то конкретно здесь достаточно записать рекордером "протяжку" корректной ВПР() (с обработкой ошибки), затем замена формул на значения - получите готовый макрос.
А в теории (и для большого количества данных) нужно делать на массивах и словаре - поищите коды по сочетанию scripting.dictionary - подойдёт любой.

И никаких .Select - это лишнее.

Автор - Hugo
Дата добавления - 26.02.2014 в 12:21
Andrej092 Дата: Среда, 26.02.2014, 12:57 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Hugo, Спасибо за ответ.

Знал бы как в ручную записать поиск сделал бы .... :) ;) А про эту функцию scripting.dictionary почитаю, может что и получится ...
Просто в колонне А:A у меня 1000 значений а в D:D 10 000 и все они не по алфавиту . По алфавиту не могу так как копирую их с дугих документов, нахожу цены и потом копирую обратно..


:)
 
Ответить
СообщениеHugo, Спасибо за ответ.

Знал бы как в ручную записать поиск сделал бы .... :) ;) А про эту функцию scripting.dictionary почитаю, может что и получится ...
Просто в колонне А:A у меня 1000 значений а в D:D 10 000 и все они не по алфавиту . По алфавиту не могу так как копирую их с дугих документов, нахожу цены и потом копирую обратно..

Автор - Andrej092
Дата добавления - 26.02.2014 в 12:57
Hugo Дата: Среда, 26.02.2014, 13:20 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Сортировка для ВПР() не нужна при поиске точного соответствия (если я правильно Вас понял :) ).
А рекордер ищите в меню :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеСортировка для ВПР() не нужна при поиске точного соответствия (если я правильно Вас понял :) ).
А рекордер ищите в меню :)

Автор - Hugo
Дата добавления - 26.02.2014 в 13:20
Andrej092 Дата: Среда, 26.02.2014, 13:28 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Hugo, я знаю что такое рекордер, да вот только не знаю как поиск через него записать... :o ;)

А сортировка и не поможет и она мне не нужна , вы правы, так как количество заполненых ячеек разное ... yes


:)
 
Ответить
СообщениеHugo, я знаю что такое рекордер, да вот только не знаю как поиск через него записать... :o ;)

А сортировка и не поможет и она мне не нужна , вы правы, так как количество заполненых ячеек разное ... yes

Автор - Andrej092
Дата добавления - 26.02.2014 в 13:28
Andrej092 Дата: Среда, 26.02.2014, 13:41 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Hugo, Большое спасибо!!!

Как я забыл про ВПР функцию, вот я ...

Еще раз спасибо!!! Но макрос я так и не доделал.... :'( Ничего будет праздник и на моей улице :)


:)
 
Ответить
СообщениеHugo, Большое спасибо!!!

Как я забыл про ВПР функцию, вот я ...

Еще раз спасибо!!! Но макрос я так и не доделал.... :'( Ничего будет праздник и на моей улице :)

Автор - Andrej092
Дата добавления - 26.02.2014 в 13:41
Hugo Дата: Среда, 26.02.2014, 13:54 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Ладно, по ВПР() мы друг друга не поняли, но всёж на такое соотношение количества данных думаю вполне применимо ВПР()
Вот, записал рекордером на доработку:

[vba]
Код
Sub zapuskatelj()
Macro1
Macro2
Macro3
End Sub

Sub Macro1()
      Range("B3").Select
      ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],C[2]:C[3],2,0)"
      Selection.AutoFill Destination:=Range("B3:B16")
      Range("B3:B16").Select
End Sub
Sub Macro2()
      Selection.Copy
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
End Sub
Sub Macro3()
      Selection.SpecialCells(xlCellTypeConstants, 16).Select
      Application.CutCopyMode = False
      Selection.ClearContents
End Sub
[/vba]
Поубирать все селкшены, мельтешение экрана...

А с поиском нужно примерно так работать (отвлечённый пример):

[vba]
Код
Sub tt()
Dim x As Range
Set x = Columns(1).Find("что ищем", , xlValues, xlWhole)
If Not x Is Nothing Then Range([a1], x.Offset(-1)).EntireRow.Delete
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЛадно, по ВПР() мы друг друга не поняли, но всёж на такое соотношение количества данных думаю вполне применимо ВПР()
Вот, записал рекордером на доработку:

[vba]
Код
Sub zapuskatelj()
Macro1
Macro2
Macro3
End Sub

Sub Macro1()
      Range("B3").Select
      ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],C[2]:C[3],2,0)"
      Selection.AutoFill Destination:=Range("B3:B16")
      Range("B3:B16").Select
End Sub
Sub Macro2()
      Selection.Copy
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
End Sub
Sub Macro3()
      Selection.SpecialCells(xlCellTypeConstants, 16).Select
      Application.CutCopyMode = False
      Selection.ClearContents
End Sub
[/vba]
Поубирать все селкшены, мельтешение экрана...

А с поиском нужно примерно так работать (отвлечённый пример):

[vba]
Код
Sub tt()
Dim x As Range
Set x = Columns(1).Find("что ищем", , xlValues, xlWhole)
If Not x Is Nothing Then Range([a1], x.Offset(-1)).EntireRow.Delete
End Sub
[/vba]

Автор - Hugo
Дата добавления - 26.02.2014 в 13:54
Andrej092 Дата: Среда, 26.02.2014, 14:44 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Hugo, Спасибо hands :hands: hands ,

ВПР я записал без макроса ... Но ваш макрос сокращает время работы... просто можно поменять диапозон и он подходит и вдругих случаях. А с функцией Find надо разобраться мне ...

P.S. Но мой макрос с мельтешением мне даже понравился, видно что он трудится в поте лица и пытается выполнить поставленую перед ним здачу B)


:)

Сообщение отредактировал Andrej092 - Среда, 26.02.2014, 14:45
 
Ответить
СообщениеHugo, Спасибо hands :hands: hands ,

ВПР я записал без макроса ... Но ваш макрос сокращает время работы... просто можно поменять диапозон и он подходит и вдругих случаях. А с функцией Find надо разобраться мне ...

P.S. Но мой макрос с мельтешением мне даже понравился, видно что он трудится в поте лица и пытается выполнить поставленую перед ним здачу B)

Автор - Andrej092
Дата добавления - 26.02.2014 в 14:44
Hugo Дата: Среда, 26.02.2014, 17:34 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Вот-вот, один мой написанный лет так 10 назад тоже так трудится у коллеги, и она не хочет ничего менять - говорит успокаивает :)
А я и не настаиваю :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВот-вот, один мой написанный лет так 10 назад тоже так трудится у коллеги, и она не хочет ничего менять - говорит успокаивает :)
А я и не настаиваю :)

Автор - Hugo
Дата добавления - 26.02.2014 в 17:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск двух и более значений с последующим их копированием (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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