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

Вход

Регистрация

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

 

= Мир MS Excel/Выборка комбинаций данных из массива - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выборка комбинаций данных из массива (Формулы/Formulas)
Выборка комбинаций данных из массива
skov Дата: Пятница, 16.02.2018, 15:54 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте. Помогите с такой задачей, если это возможно при помощи формул. Есть массив данных из 4-х столбцов. Необходимо для выпадающих списков выбрать все возможные комбинации данных из этого массива при выборе значения в первом столбце.
К сообщению приложен файл: 00001.xlsx (14.4 Kb)
 
Ответить
СообщениеЗдравствуйте. Помогите с такой задачей, если это возможно при помощи формул. Есть массив данных из 4-х столбцов. Необходимо для выпадающих списков выбрать все возможные комбинации данных из этого массива при выборе значения в первом столбце.

Автор - skov
Дата добавления - 16.02.2018 в 15:54
abtextime Дата: Пятница, 16.02.2018, 18:04 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
Не знаю, правильно ли понял задачу, но вот ...

[vba]
Код
Sub Grusha()
    
    Set R = ThisWorkbook.ActiveSheet.Range("D9:G19")
    S = ThisWorkbook.ActiveSheet.Range("L9:L9").Cells(1, 1).Value
    Set Target = ThisWorkbook.ActiveSheet.Range("L9:O19")

    For j = 2 To R.Columns.Count
        Counter = 0
        SS = ""
        RRC = R.Rows.Count
        For i = 1 To RRC
              If InStr(S, R.Cells(i, j - 1).Value) > 0 Then
                    If InStr(SS, R.Cells(i, j).Value) = 0 Then
                        Counter = Counter + 1
                        Target.Cells(Counter, j).Value = R.Cells(i, j).Value
                        SS = SS & "#" & R.Cells(i, j).Value
                    End If
             End If
        Next i
        S = SS
    Next j
End Sub
[/vba]
К сообщению приложен файл: 00001.xlsm (21.1 Kb)
 
Ответить
СообщениеНе знаю, правильно ли понял задачу, но вот ...

[vba]
Код
Sub Grusha()
    
    Set R = ThisWorkbook.ActiveSheet.Range("D9:G19")
    S = ThisWorkbook.ActiveSheet.Range("L9:L9").Cells(1, 1).Value
    Set Target = ThisWorkbook.ActiveSheet.Range("L9:O19")

    For j = 2 To R.Columns.Count
        Counter = 0
        SS = ""
        RRC = R.Rows.Count
        For i = 1 To RRC
              If InStr(S, R.Cells(i, j - 1).Value) > 0 Then
                    If InStr(SS, R.Cells(i, j).Value) = 0 Then
                        Counter = Counter + 1
                        Target.Cells(Counter, j).Value = R.Cells(i, j).Value
                        SS = SS & "#" & R.Cells(i, j).Value
                    End If
             End If
        Next i
        S = SS
    Next j
End Sub
[/vba]

Автор - abtextime
Дата добавления - 16.02.2018 в 18:04
abtextime Дата: Пятница, 16.02.2018, 20:23 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
Можно поставить этот макрос на изменение L9, но я что-то затупил и не могу заставить Excel очистить диапазон Target

Но тупить уже некогда, увы

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("L9")) Is Nothing Then
Call Grusha
End If
End Sub
[/vba]
 
Ответить
СообщениеМожно поставить этот макрос на изменение L9, но я что-то затупил и не могу заставить Excel очистить диапазон Target

Но тупить уже некогда, увы

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("L9")) Is Nothing Then
Call Grusha
End If
End Sub
[/vba]

Автор - abtextime
Дата добавления - 16.02.2018 в 20:23
abtextime Дата: Суббота, 17.02.2018, 19:25 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация: 117 ±
Замечаний: 0% ±

Excel 2010
Поправочка, макрос работает, если нет пар типа "МЯСО-МЯСОпродукты"

Если такое есть, то надо чуть-чуть усложнить пару строчек

[vba]
Код
            If InStr(S, R.Cells(i, j - 1).Value) > 0 Then
                    If InStr(SS, R.Cells(i, j).Value) = 0 Then
[/vba]

заменить на
[vba]
Код

            If InStr(S, R.Cells(i, j - 1).Value & "#") > 0 Then
                    If InStr(SS, R.Cells(i, j).Value & "#") = 0 Then
[/vba]
 
Ответить
СообщениеПоправочка, макрос работает, если нет пар типа "МЯСО-МЯСОпродукты"

Если такое есть, то надо чуть-чуть усложнить пару строчек

[vba]
Код
            If InStr(S, R.Cells(i, j - 1).Value) > 0 Then
                    If InStr(SS, R.Cells(i, j).Value) = 0 Then
[/vba]

заменить на
[vba]
Код

            If InStr(S, R.Cells(i, j - 1).Value & "#") > 0 Then
                    If InStr(SS, R.Cells(i, j).Value & "#") = 0 Then
[/vba]

Автор - abtextime
Дата добавления - 17.02.2018 в 19:25
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Выборка комбинаций данных из массива (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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