vladimirr89
Дата: Понедельник, 19.03.2018, 17:25 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Необходимо массив данных перевести по принципу 1 столбец главный и привязывается к каждому значению следующему за ним и так по каждой стоке. То есть первый столбец это id фильма, а значения следом - это id тэгов, необходимо чтобы каждому фильму соответствовали свои тэги. только у меня это в цифровом формате. Как транспонировать знаю, но в данном случае похоже что нужен ВБА и создание циклов. Может вы подскажете какой цикл мне поможет? Пример таблички с объяснением прикрепляю.
Необходимо массив данных перевести по принципу 1 столбец главный и привязывается к каждому значению следующему за ним и так по каждой стоке. То есть первый столбец это id фильма, а значения следом - это id тэгов, необходимо чтобы каждому фильму соответствовали свои тэги. только у меня это в цифровом формате. Как транспонировать знаю, но в данном случае похоже что нужен ВБА и создание циклов. Может вы подскажете какой цикл мне поможет? Пример таблички с объяснением прикрепляю. vladimirr89
Ответить
Сообщение Необходимо массив данных перевести по принципу 1 столбец главный и привязывается к каждому значению следующему за ним и так по каждой стоке. То есть первый столбец это id фильма, а значения следом - это id тэгов, необходимо чтобы каждому фильму соответствовали свои тэги. только у меня это в цифровом формате. Как транспонировать знаю, но в данном случае похоже что нужен ВБА и создание циклов. Может вы подскажете какой цикл мне поможет? Пример таблички с объяснением прикрепляю. Автор - vladimirr89 Дата добавления - 19.03.2018 в 17:25
sboy
Дата: Понедельник, 19.03.2018, 17:46 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Добрый день.
Sub dobav()
Dim result1()
Dim result2()
ReDim result1(1 )
ReDim result2(1 )
For r = 2 To Cells(Rows.Count, 1 ).End(xlUp).Row
arr = Range(Cells(r, 1 ), Cells(r, Columns.Count).End(xlToLeft)).Value
For i = 2 To UBound (Application.Transpose(arr))
n = n + 1
result1(n) = Cells(r, 1 ).Value
result2(n) = arr(1 , i)
ReDim Preserve result1(UBound (result1) + 1 )
ReDim Preserve result2(UBound (result2) + 1 )
Next i
Next
Cells(4 , 12 ).Resize(UBound (result1), 1 ) = Application.Transpose(result1)
Cells(4 , 13 ).Resize(UBound (result2), 1 ) = Application.Transpose(result2)
End Sub
Добрый день.
Sub dobav()
Dim result1()
Dim result2()
ReDim result1(1 )
ReDim result2(1 )
For r = 2 To Cells(Rows.Count, 1 ).End(xlUp).Row
arr = Range(Cells(r, 1 ), Cells(r, Columns.Count).End(xlToLeft)).Value
For i = 2 To UBound (Application.Transpose(arr))
n = n + 1
result1(n) = Cells(r, 1 ).Value
result2(n) = arr(1 , i)
ReDim Preserve result1(UBound (result1) + 1 )
ReDim Preserve result2(UBound (result2) + 1 )
Next i
Next
Cells(4 , 12 ).Resize(UBound (result1), 1 ) = Application.Transpose(result1)
Cells(4 , 13 ).Resize(UBound (result2), 1 ) = Application.Transpose(result2)
End Sub
sboy
Яндекс: 410016850021169
Ответить
Сообщение Добрый день. [vba]
Sub dobav()Dim result1 ()Dim result2 ()ReDim result1 (1)ReDim result2 (1) For r = 2 To Cells(Rows.Count , 1).End(xlUp ).Row arr = Range(Cells(r , 1), Cells(r , Columns.Count ).End(xlToLeft )).Value For i = 2 To UBound(Application.Transpose(arr )) n = n + 1 result1 (n ) = Cells(r , 1).Value result2 (n ) = arr(1, i ) ReDim Preserve result1 (UBound(result1 ) + 1) ReDim Preserve result2 (UBound(result2 ) + 1) Next i Next Cells(4, 12).Resize(UBound(result1 ), 1) = Application.Transpose(result1 ) Cells(4, 13).Resize(UBound(result2 ), 1) = Application.Transpose(result2 )End Sub
[/vba] Автор - sboy Дата добавления - 19.03.2018 в 17:46
Nic70y
Дата: Понедельник, 19.03.2018, 17:56 |
Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 9133
Репутация:
2416
±
Замечаний:
0% ±
Excel 2010
ЮMoney 41001841029809
Ответить
Сообщение ну чуть шо сразу ВиБиЭй Автор - Nic70y Дата добавления - 19.03.2018 в 17:56
jakim
Дата: Понедельник, 19.03.2018, 18:04 |
Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1218
Репутация:
316
±
Замечаний:
0% ±
Excel 2010
Смотрите вариант с формулами:
для стобца L
=ЕСЛИОШИБКА(ИНДЕКС(A$2:A$50 ;АГРЕГАТ(15;6;СТРОКА(B$1:F$50 )/(B$2:F$50 <>"");ЧСТРОК($2:2 )));"")
для стобца M
=ЕСЛИОШИБКА(ИНДЕКС($B$2:$F$50 ;ПОИСКПОЗ(L4 ;A$2:A$50 ;0);АГРЕГАТ(15;6;СТОЛБЕЦ($A:$J )/($A$2:$A$50 =L4 )/($B$2:$F$50 <>"");СЧЁТЕСЛИ(L$4:L4 ;L4 )));"")
Смотрите вариант с формулами:
для стобца L
=ЕСЛИОШИБКА(ИНДЕКС(A$2:A$50 ;АГРЕГАТ(15;6;СТРОКА(B$1:F$50 )/(B$2:F$50 <>"");ЧСТРОК($2:2 )));"")
для стобца M
=ЕСЛИОШИБКА(ИНДЕКС($B$2:$F$50 ;ПОИСКПОЗ(L4 ;A$2:A$50 ;0);АГРЕГАТ(15;6;СТОЛБЕЦ($A:$J )/($A$2:$A$50 =L4 )/($B$2:$F$50 <>"");СЧЁТЕСЛИ(L$4:L4 ;L4 )));"")
jakim
Сообщение отредактировал jakim - Понедельник, 19.03.2018, 18:05
Ответить
Сообщение Смотрите вариант с формулами:
для стобца L
=ЕСЛИОШИБКА(ИНДЕКС(A$2:A$50 ;АГРЕГАТ(15;6;СТРОКА(B$1:F$50 )/(B$2:F$50 <>"");ЧСТРОК($2:2 )));"")
для стобца M
=ЕСЛИОШИБКА(ИНДЕКС($B$2:$F$50 ;ПОИСКПОЗ(L4 ;A$2:A$50 ;0);АГРЕГАТ(15;6;СТОЛБЕЦ($A:$J )/($A$2:$A$50 =L4 )/($B$2:$F$50 <>"");СЧЁТЕСЛИ(L$4:L4 ;L4 )));"")
Автор - jakim Дата добавления - 19.03.2018 в 18:04