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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Подстановка всех возможных комбинаций
Олег78 Дата: Среда, 09.10.2013, 19:28 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем, добрый вечер. Пытаюсь написать макрос, но не хватает знаний(
Суть макроса в следующем: на первом листе в колону А вписываются продукты, справа от продукта в строчку указываются возможные коды этого продукта.
Макрос подтягивает все возможные комбинации Код+Продукт в таблицу на листе 2, также на лист 2 проставляет в колонку А слово все. Пример приложил.
Буду благодарен за помощь:)
К сообщению приложен файл: 3735659.xlsx (13.9 Kb)
 
Ответить
СообщениеВсем, добрый вечер. Пытаюсь написать макрос, но не хватает знаний(
Суть макроса в следующем: на первом листе в колону А вписываются продукты, справа от продукта в строчку указываются возможные коды этого продукта.
Макрос подтягивает все возможные комбинации Код+Продукт в таблицу на листе 2, также на лист 2 проставляет в колонку А слово все. Пример приложил.
Буду благодарен за помощь:)

Автор - Олег78
Дата добавления - 09.10.2013 в 19:28
nilem Дата: Среда, 09.10.2013, 21:02 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Привет, Олег
попробуйте так:
[vba]
Код
Sub ertert()
Dim x, y(), i&, j&, k&
x = Sheets("Sheet1").Range("A1").CurrentRegion.Value
ReDim y(1 To UBound(x) * UBound(x, 2), 1 To 3)
For i = 1 To UBound(x)
     For j = 2 To UBound(x, 2)
         If Len(x(i, j)) Then k = k + 1: y(k, 1) = "All": y(k, 2) = x(i, j): y(k, 3) = x(i, 1)
     Next j
Next i
With Sheets("Sheet2")
     .UsedRange.ClearContents
     .Range("A1:C1").Value = Array("Type", "Code", "Name")
     .Range("A2:C2").Resize(k).Value = y()
     .Activate
End With
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеПривет, Олег
попробуйте так:
[vba]
Код
Sub ertert()
Dim x, y(), i&, j&, k&
x = Sheets("Sheet1").Range("A1").CurrentRegion.Value
ReDim y(1 To UBound(x) * UBound(x, 2), 1 To 3)
For i = 1 To UBound(x)
     For j = 2 To UBound(x, 2)
         If Len(x(i, j)) Then k = k + 1: y(k, 1) = "All": y(k, 2) = x(i, j): y(k, 3) = x(i, 1)
     Next j
Next i
With Sheets("Sheet2")
     .UsedRange.ClearContents
     .Range("A1:C1").Value = Array("Type", "Code", "Name")
     .Range("A2:C2").Resize(k).Value = y()
     .Activate
End With
End Sub
[/vba]

Автор - nilem
Дата добавления - 09.10.2013 в 21:02
Олег78 Дата: Среда, 09.10.2013, 21:14 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо, работает на ура)))
 
Ответить
СообщениеСпасибо, работает на ура)))

Автор - Олег78
Дата добавления - 09.10.2013 в 21:14
KuklP Дата: Среда, 09.10.2013, 21:24 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Вариант, в модуль листа 1(без очистки листа 2):
[vba]
Код
Public Sub www()
     Dim a, i&, j&, d&, n&
     d = [a1].CurrentRegion.SpecialCells(2, 1).Count
     a = [a1].CurrentRegion
     ReDim b(1 To d, 1 To 3)
     For i = 1 To UBound(a)
         For j = 2 To UBound(a, 2)
             If a(i, j) <> "" Then
                 n = n + 1
                 b(n, 1) = "Все": b(n, 3) = a(i, 1)
                 b(n, 2) = a(i, j)
             End If
         Next
     Next
     Sheets("Sheet2").[a2].Resize(d, 3) = b
End Sub
[/vba]
К сообщению приложен файл: 3735659.xlsm (21.5 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВариант, в модуль листа 1(без очистки листа 2):
[vba]
Код
Public Sub www()
     Dim a, i&, j&, d&, n&
     d = [a1].CurrentRegion.SpecialCells(2, 1).Count
     a = [a1].CurrentRegion
     ReDim b(1 To d, 1 To 3)
     For i = 1 To UBound(a)
         For j = 2 To UBound(a, 2)
             If a(i, j) <> "" Then
                 n = n + 1
                 b(n, 1) = "Все": b(n, 3) = a(i, 1)
                 b(n, 2) = a(i, j)
             End If
         Next
     Next
     Sheets("Sheet2").[a2].Resize(d, 3) = b
End Sub
[/vba]

Автор - KuklP
Дата добавления - 09.10.2013 в 21:24
Олег78 Дата: Среда, 09.10.2013, 21:55 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
KuklP, спасибо:)


Сообщение отредактировал Олег78 - Среда, 09.10.2013, 21:56
 
Ответить
СообщениеKuklP, спасибо:)

Автор - Олег78
Дата добавления - 09.10.2013 в 21:55
  • Страница 1 из 1
  • 1
Поиск:

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