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

Вход

Регистрация

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

 

= Мир MS Excel/Как получить Массив при выборе из выпадающего списка? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как получить Массив при выборе из выпадающего списка?
airwaves18244 Дата: Четверг, 13.12.2012, 14:38 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Здравствуйте. Не могу решить следующую задачу - как при выборе из выпадающего списка (товар 1 или товар 2), получать рядом состав выбранного товара в нескольчик ячейках (для 1 - 1,2,3, для 2 -4,5,6 (кол-во элементов может меняться)). Вообщем главная сложность как получить массив автоматом при выборе из выпадающего списка значения. Руками как сделать понятно - формула ДВССЫЛ, далее выделяем массив и ctrl+shift+enter, а автоматом не соображу.
К сообщению приложен файл: 9084186.xls (24.0 Kb) · 7306646.jpg (45.2 Kb)


Сообщение отредактировал airwaves18244 - Четверг, 13.12.2012, 14:46
 
Ответить
СообщениеЗдравствуйте. Не могу решить следующую задачу - как при выборе из выпадающего списка (товар 1 или товар 2), получать рядом состав выбранного товара в нескольчик ячейках (для 1 - 1,2,3, для 2 -4,5,6 (кол-во элементов может меняться)). Вообщем главная сложность как получить массив автоматом при выборе из выпадающего списка значения. Руками как сделать понятно - формула ДВССЫЛ, далее выделяем массив и ctrl+shift+enter, а автоматом не соображу.

Автор - airwaves18244
Дата добавления - 13.12.2012 в 14:38
AlexM Дата: Четверг, 13.12.2012, 15:08 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Что значит автоматом?
Чтобы в F9:F11 не вставлять формулы, а значения менялись?



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЧто значит автоматом?
Чтобы в F9:F11 не вставлять формулы, а значения менялись?

Автор - AlexM
Дата добавления - 13.12.2012 в 15:08
airwaves18244 Дата: Четверг, 13.12.2012, 15:19 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

1


Сообщение отредактировал airwaves18244 - Четверг, 13.12.2012, 15:21
 
Ответить
Сообщение1

Автор - airwaves18244
Дата добавления - 13.12.2012 в 15:19
airwaves18244 Дата: Четверг, 13.12.2012, 15:20 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

AlexM, Чтобы выбрать "продукт2" из списка в ячейке Е14, а в F14:F16 вставились значения 4,5,6

P.S Добавил макрос

Sub macros 2()
' macros 2
ActiveCell.FormulaR1C1 = "=INDIRECT(RC[-1])" 'ввод формулы в F14
Range("F14:F16").Select Selection.FormulaArray = "=INDIRECT(RC[-1])"
Range("F14:F16").Select 'ввод формулы в F14:F16
End Sub

Заполняет нужные ячейки.
Возникает вопрос - а можно сделать диапазон F14:F16 динамически меняющийся, в зависимости от выбранного значения из списка (продукт1, продукт2). Например, если в продукт1 5 значений, то выделяется диапазон из 5 ячеек, а если 7 значений, то 7 ячеек?


Сообщение отредактировал airwaves18244 - Четверг, 13.12.2012, 15:47
 
Ответить
СообщениеAlexM, Чтобы выбрать "продукт2" из списка в ячейке Е14, а в F14:F16 вставились значения 4,5,6

P.S Добавил макрос

Sub macros 2()
' macros 2
ActiveCell.FormulaR1C1 = "=INDIRECT(RC[-1])" 'ввод формулы в F14
Range("F14:F16").Select Selection.FormulaArray = "=INDIRECT(RC[-1])"
Range("F14:F16").Select 'ввод формулы в F14:F16
End Sub

Заполняет нужные ячейки.
Возникает вопрос - а можно сделать диапазон F14:F16 динамически меняющийся, в зависимости от выбранного значения из списка (продукт1, продукт2). Например, если в продукт1 5 значений, то выделяется диапазон из 5 ячеек, а если 7 значений, то 7 ячеек?

Автор - airwaves18244
Дата добавления - 13.12.2012 в 15:20
Serge_007 Дата: Четверг, 13.12.2012, 15:45 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (airwaves18244)
чтобы выбрать "продукт2" из списка в ячейке Е14, а в F14:F16 вставились значения 4,5,6

Скопировать F9:F13 и вставить в F14


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (airwaves18244)
чтобы выбрать "продукт2" из списка в ячейке Е14, а в F14:F16 вставились значения 4,5,6

Скопировать F9:F13 и вставить в F14

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

Excel 2003
Тогда без макроса не обойтись
Код в модуле Лист1
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "E14" Then
       Range(Target.Value).Copy (Sheets("Лист1").Range("F14"))
End If
End Sub
[/vba]

Пояснение. В коде Target.Value - это имя диапазона, продукт1 или продукт2. Какой размер имеет именованный диапазон, столько ячеек копируется. Если диапазоны разного размера, то в начале кода надо очищать место под вставку.
К сообщению приложен файл: 9084186_new.xls (33.0 Kb)



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


Сообщение отредактировал AlexM - Четверг, 13.12.2012, 15:58
 
Ответить
СообщениеТогда без макроса не обойтись
Код в модуле Лист1
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "E14" Then
       Range(Target.Value).Copy (Sheets("Лист1").Range("F14"))
End If
End Sub
[/vba]

Пояснение. В коде Target.Value - это имя диапазона, продукт1 или продукт2. Какой размер имеет именованный диапазон, столько ячеек копируется. Если диапазоны разного размера, то в начале кода надо очищать место под вставку.

Автор - AlexM
Дата добавления - 13.12.2012 в 15:46
airwaves18244 Дата: Четверг, 13.12.2012, 16:01 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

AlexM, спасибо) Работает. А как доработать ваш макрос чтобы он работал при копировании в любой ячейке на листе а не только в E14?
 
Ответить
СообщениеAlexM, спасибо) Работает. А как доработать ваш макрос чтобы он работал при копировании в любой ячейке на листе а не только в E14?

Автор - airwaves18244
Дата добавления - 13.12.2012 в 16:01
AlexM Дата: Четверг, 13.12.2012, 16:31 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
На любой не получится. Нельзя же, например, в E14 и F14. Ячейки можно перечислить в условии через Or или определять что ячейка попадает в допустимый диапазон, и тд.
Доработанный код имеет очистку диапазона перед вставкой новых значений. и может работать с двумя ячейками E14 и H5 которые будут разрешены, как написал выше.
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "E14" Or Target.Address(0, 0) = "H5" Then
     Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row + 5, Target.Column + 1)).ClearContents
     Range(Target.Value).Copy (Sheets("Лист1").Cells(Target.Row, Target.Column + 1))
End If
End Sub
[/vba]
К сообщению приложен файл: 1504601.xls (36.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеНа любой не получится. Нельзя же, например, в E14 и F14. Ячейки можно перечислить в условии через Or или определять что ячейка попадает в допустимый диапазон, и тд.
Доработанный код имеет очистку диапазона перед вставкой новых значений. и может работать с двумя ячейками E14 и H5 которые будут разрешены, как написал выше.
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "E14" Or Target.Address(0, 0) = "H5" Then
     Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row + 5, Target.Column + 1)).ClearContents
     Range(Target.Value).Copy (Sheets("Лист1").Cells(Target.Row, Target.Column + 1))
End If
End Sub
[/vba]

Автор - AlexM
Дата добавления - 13.12.2012 в 16:31
airwaves18244 Дата: Четверг, 13.12.2012, 16:48 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

AlexM, т.е на активную ячейку я не могу завязать? If Target.Address(0, 0) = ActiveCell
 
Ответить
СообщениеAlexM, т.е на активную ячейку я не могу завязать? If Target.Address(0, 0) = ActiveCell

Автор - airwaves18244
Дата добавления - 13.12.2012 в 16:48
AlexM Дата: Четверг, 13.12.2012, 17:07 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Так не поучится
Target.Address(0, 0) = адрес ячейки где произошли изменения.
Может быть так подойдет?
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(0, 0)
Case "E14", "H5"
     Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row + 5, Target.Column + 1)).ClearContents
     Range(Target.Value).Copy (Sheets("Лист1").Cells(Target.Row, Target.Column + 1))
End Select
End Sub
[/vba]
Через запятую указываете нужные ячейки.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеТак не поучится
Target.Address(0, 0) = адрес ячейки где произошли изменения.
Может быть так подойдет?
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(0, 0)
Case "E14", "H5"
     Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row + 5, Target.Column + 1)).ClearContents
     Range(Target.Value).Copy (Sheets("Лист1").Cells(Target.Row, Target.Column + 1))
End Select
End Sub
[/vba]
Через запятую указываете нужные ячейки.

Автор - AlexM
Дата добавления - 13.12.2012 в 17:07
airwaves18244 Дата: Четверг, 13.12.2012, 17:49 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

AlexM, не смог задать столбец. Поэтому в лоб "E1", "E2", "E3", "E4", "E5", ... и так далее. Более 100 строк не предполагаю в одном документе, поэтому должно работать. Спасибо огромное!!Очень благодарен) Не пришлось городить трехэтажный кривой свой макрос)
 
Ответить
СообщениеAlexM, не смог задать столбец. Поэтому в лоб "E1", "E2", "E3", "E4", "E5", ... и так далее. Более 100 строк не предполагаю в одном документе, поэтому должно работать. Спасибо огромное!!Очень благодарен) Не пришлось городить трехэтажный кривой свой макрос)

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

Excel 2003
А так?
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("E1:E100"), Target) Is Nothing Then
     Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row + 5, Target.Column + 1)).ClearContents
     Range(Target.Value).Copy (Sheets("Лист1").Cells(Target.Row, Target.Column + 1))
End If
End Sub
[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеА так?
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("E1:E100"), Target) Is Nothing Then
     Range(Cells(Target.Row, Target.Column + 1), Cells(Target.Row + 5, Target.Column + 1)).ClearContents
     Range(Target.Value).Copy (Sheets("Лист1").Cells(Target.Row, Target.Column + 1))
End If
End Sub
[/vba]

Автор - AlexM
Дата добавления - 13.12.2012 в 17:57
airwaves18244 Дата: Четверг, 13.12.2012, 18:07 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

AlexM, просто отлично!)
 
Ответить
СообщениеAlexM, просто отлично!)

Автор - airwaves18244
Дата добавления - 13.12.2012 в 18:07
  • Страница 1 из 1
  • 1
Поиск:

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