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

Вход

Регистрация

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

 

= Мир MS Excel/3 столбца. Найти в 1ом значение из 2 и скопировать правее 3й - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » 3 столбца. Найти в 1ом значение из 2 и скопировать правее 3й (Макросы Sub)
3 столбца. Найти в 1ом значение из 2 и скопировать правее 3й
Евгения Дата: Воскресенье, 16.02.2014, 22:53 | Сообщение № 1
Группа: Гости
ДАНО
Имеется 3 столбца. В первом - 45000 артикулов. Во втором 2000 артикулов, каждый из который несколько раз встречается в 1ом столбце. В третьем - соответствующие 2му столбцу тексты.
ЗАДАЧА
Найти в первом столбце все артикулы из 2го столбца и вставить на 2 ячейки правее каждого из них соответствующее значение из третьего столбца.

P.S.
Долго пыталась сама написать макрос, дошла для решения по 1 итерации. Но как довести до конца и полностью автоматизировать процесс уже не могу додуматься. Надеюсь на помощь.
Вот то, что написала я:
x = Range("H12").Value
y = Range("J12").Value
ActiveSheet.UsedRange.Cells.Find(What:=x, _
After:=ActiveCell, _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False).Select


Selection.Offset(0, 2).Value = y

Пример задачи:
10 3 текст3
22 7 текст7
3 9 текст9
44
56
62
7
80
9
3
7
Необходимо получить:
10 3 текст3
22 7 текст7
3 текст3 9 текст9
44
56
62
7 текст7
80
9 текст9
3 текст3
7 текст7
 
Ответить
СообщениеДАНО
Имеется 3 столбца. В первом - 45000 артикулов. Во втором 2000 артикулов, каждый из который несколько раз встречается в 1ом столбце. В третьем - соответствующие 2му столбцу тексты.
ЗАДАЧА
Найти в первом столбце все артикулы из 2го столбца и вставить на 2 ячейки правее каждого из них соответствующее значение из третьего столбца.

P.S.
Долго пыталась сама написать макрос, дошла для решения по 1 итерации. Но как довести до конца и полностью автоматизировать процесс уже не могу додуматься. Надеюсь на помощь.
Вот то, что написала я:
x = Range("H12").Value
y = Range("J12").Value
ActiveSheet.UsedRange.Cells.Find(What:=x, _
After:=ActiveCell, _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False).Select


Selection.Offset(0, 2).Value = y

Пример задачи:
10 3 текст3
22 7 текст7
3 9 текст9
44
56
62
7
80
9
3
7
Необходимо получить:
10 3 текст3
22 7 текст7
3 текст3 9 текст9
44
56
62
7 текст7
80
9 текст9
3 текст3
7 текст7

Автор - Евгения
Дата добавления - 16.02.2014 в 22:53
Евгения Дата: Воскресенье, 16.02.2014, 22:58 | Сообщение № 2
Группа: Гости
Извиняюсь, в примерах удалились пробелы и они стали нечитаемыми. Переписываю:
Пример задачи:
10----------------------3-----------текст3
22----------------------7-----------текст7
3-----------------------9-----------текст9
44----------------------
56----------------------
62----------------------
7----------------------
80----------------------
9----------------------
3----------------------
7----------------------

Необходимо получить:
10----------------------3-----------текст3
22----------------------7-----------текст7
3-----------текст3-----9-----------текст9
44----------------------
56----------------------
62----------------------
7-----------текст7-----
80----------------------
9-----------текст9----
3-----------текст3----
7-----------текст7----
 
Ответить
СообщениеИзвиняюсь, в примерах удалились пробелы и они стали нечитаемыми. Переписываю:
Пример задачи:
10----------------------3-----------текст3
22----------------------7-----------текст7
3-----------------------9-----------текст9
44----------------------
56----------------------
62----------------------
7----------------------
80----------------------
9----------------------
3----------------------
7----------------------

Необходимо получить:
10----------------------3-----------текст3
22----------------------7-----------текст7
3-----------текст3-----9-----------текст9
44----------------------
56----------------------
62----------------------
7-----------текст7-----
80----------------------
9-----------текст9----
3-----------текст3----
7-----------текст7----

Автор - Евгения
Дата добавления - 16.02.2014 в 22:58
Pelena Дата: Воскресенье, 16.02.2014, 23:04 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19195
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
Обязательно макросы? Функция ВПР() не вариант?

В любом случае нужен файл с примером в соответствии с Правилами форума


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеОбязательно макросы? Функция ВПР() не вариант?

В любом случае нужен файл с примером в соответствии с Правилами форума

Автор - Pelena
Дата добавления - 16.02.2014 в 23:04
lmln Дата: Понедельник, 17.02.2014, 09:11 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Прикрепляю файлы примера. Для удобства удалила строки, оставила только 30. На листе 1 - то, что есть изначально, на листе 2 - то, что надо получить.
Обязательно макросы? Функция ВПР() не вариант?

С макросами я хоть как-то знакома, а с функцией познакомилась впервые после вашего сообщения. Насколько я смогла в ней разобраться, она ВСТАВИТ ИСКОМОЕ значение. Мне же нужно ПРАВЕЕ ИСКОМОГО вставить имеющееся выражение. Поправьте, если я не права.
К сообщению приложен файл: 2784357.xls (62.5 Kb)
 
Ответить
СообщениеПрикрепляю файлы примера. Для удобства удалила строки, оставила только 30. На листе 1 - то, что есть изначально, на листе 2 - то, что надо получить.
Обязательно макросы? Функция ВПР() не вариант?

С макросами я хоть как-то знакома, а с функцией познакомилась впервые после вашего сообщения. Насколько я смогла в ней разобраться, она ВСТАВИТ ИСКОМОЕ значение. Мне же нужно ПРАВЕЕ ИСКОМОГО вставить имеющееся выражение. Поправьте, если я не права.

Автор - lmln
Дата добавления - 17.02.2014 в 09:11
Pelena Дата: Понедельник, 17.02.2014, 09:22 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19195
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
Вариант формулой
Код
=ЕСЛИ(ЕНД(ВПР(D2;$H$2:$J$5;3;0));"";ВПР(D2;$H$2:$J$5;3;0))
К сообщению приложен файл: 4150042.xls (57.5 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВариант формулой
Код
=ЕСЛИ(ЕНД(ВПР(D2;$H$2:$J$5;3;0));"";ВПР(D2;$H$2:$J$5;3;0))

Автор - Pelena
Дата добавления - 17.02.2014 в 09:22
KuklP Дата: Понедельник, 17.02.2014, 09:50 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Если считаете, что с макросом Вам легче будет разобраться, то:
[vba]
Код
Public Sub www()
     Dim a, b, i&
     a = Range("h2:j" & [h65536].End(xlUp).Row)
     With CreateObject("scripting.dictionary")
         For i = 1 To UBound(a)
             .Item(a(i, 1)) = i
         Next
         b = Range("d2:f" & [d65536].End(xlUp).Row)
         For i = 1 To UBound(b)
             If .Exists(b(i, 1)) Then b(i, 3) = a(.Item(b(i, 1)), 3)
         Next
     End With
     [d2].Resize(UBound(b), 3) = b
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЕсли считаете, что с макросом Вам легче будет разобраться, то:
[vba]
Код
Public Sub www()
     Dim a, b, i&
     a = Range("h2:j" & [h65536].End(xlUp).Row)
     With CreateObject("scripting.dictionary")
         For i = 1 To UBound(a)
             .Item(a(i, 1)) = i
         Next
         b = Range("d2:f" & [d65536].End(xlUp).Row)
         For i = 1 To UBound(b)
             If .Exists(b(i, 1)) Then b(i, 3) = a(.Item(b(i, 1)), 3)
         Next
     End With
     [d2].Resize(UBound(b), 3) = b
End Sub
[/vba]

Автор - KuklP
Дата добавления - 17.02.2014 в 09:50
lmln Дата: Понедельник, 17.02.2014, 09:53 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо большое, смысл поняла. Но я так понимаю, вы вручную вставляли эти формулы в соответствующие ячейки? То есть:
1) поиск первого значения из столбца "ПОИСК ПО ЭТОМУ НОМЕРУ"
2) смещаемся на 2 ячейки вправо от найденного значения
3) вставляем формулу
4) меняем аргумент ВПР "искомое значение" на номер найденной в п.1 ячейки
Правильно я поняла?
Если так, то эту часть мне нужно как-то автоматизировать. И снова я вижу только 1 путь - через макросы. Но такой макрос достаточно просто написать, единственное - не знаю, как на VBA написать поиск ячейки целиком (не на совпадение части значения, а на полное совпадение).
Не подскажете, как это сделать, и верны ли вообще мои рассуждения?
 
Ответить
СообщениеСпасибо большое, смысл поняла. Но я так понимаю, вы вручную вставляли эти формулы в соответствующие ячейки? То есть:
1) поиск первого значения из столбца "ПОИСК ПО ЭТОМУ НОМЕРУ"
2) смещаемся на 2 ячейки вправо от найденного значения
3) вставляем формулу
4) меняем аргумент ВПР "искомое значение" на номер найденной в п.1 ячейки
Правильно я поняла?
Если так, то эту часть мне нужно как-то автоматизировать. И снова я вижу только 1 путь - через макросы. Но такой макрос достаточно просто написать, единственное - не знаю, как на VBA написать поиск ячейки целиком (не на совпадение части значения, а на полное совпадение).
Не подскажете, как это сделать, и верны ли вообще мои рассуждения?

Автор - lmln
Дата добавления - 17.02.2014 в 09:53
KuklP Дата: Понедельник, 17.02.2014, 10:01 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Правильно я поняла?
Нет конечно. Вставили формулу в F3 и протягиваем до конца списка. Все. Вы макрос пробовали?


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

Автор - KuklP
Дата добавления - 17.02.2014 в 10:01
lmln Дата: Понедельник, 17.02.2014, 10:07 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
:D что-то я с утра совсем тупая.
Макрос пробую, но на моем рабочем файле не работает: надо что-то подкорректировать, но я не могу разобраться, что. Мой уровень в макросах куда ниже, чем в предложенном варианте :(
Хотя наверно если почитать про каждое из выражений - станет ясно.
На файле-примере макрос работает безукоризненно.
Спасибо большое за помощь!
 
Ответить
Сообщение:D что-то я с утра совсем тупая.
Макрос пробую, но на моем рабочем файле не работает: надо что-то подкорректировать, но я не могу разобраться, что. Мой уровень в макросах куда ниже, чем в предложенном варианте :(
Хотя наверно если почитать про каждое из выражений - станет ясно.
На файле-примере макрос работает безукоризненно.
Спасибо большое за помощь!

Автор - lmln
Дата добавления - 17.02.2014 в 10:07
Мир MS Excel » Вопросы и решения » Вопросы по VBA » 3 столбца. Найти в 1ом значение из 2 и скопировать правее 3й (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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