Здравствуйте, Есть таблица в которой за именем человека указывается несколько проектов, например 3. Во второй вкладке хотелось бы чтобы имя человека автоматически писалось три раза в три строки с указание этих трех проектов. Тоесть, если допустим имен 10 и суммарное кол-во проектов 40, то во вторая вкладка таблицы сгенерирует 40 строк с повторяющимися именами с указанными напротив проектами.
Буду признателен, за помощь или наводку.
Здравствуйте, Есть таблица в которой за именем человека указывается несколько проектов, например 3. Во второй вкладке хотелось бы чтобы имя человека автоматически писалось три раза в три строки с указание этих трех проектов. Тоесть, если допустим имен 10 и суммарное кол-во проектов 40, то во вторая вкладка таблицы сгенерирует 40 строк с повторяющимися именами с указанными напротив проектами.
Буду признателен, за помощь или наводку.ExcelUser2000
Спасибо за наводку, но видимо моих знаний PQ не достаточно, что бы реализовать главную задачу. По большому счету всё происходящее в тиаблице это сложение и вычитание сумм, но вот именно сосздание некого репорта где имено добавляются по количеству проектов я не догоняю как сделать.
Спасибо за наводку, но видимо моих знаний PQ не достаточно, что бы реализовать главную задачу. По большому счету всё происходящее в тиаблице это сложение и вычитание сумм, но вот именно сосздание некого репорта где имено добавляются по количеству проектов я не догоняю как сделать.ExcelUser2000
Sub Макрос1() Dim arr, arr1, n As Long, m As Long, k As Long On Error GoTo Osh arr = Range("C6:J" & Cells(Rows.Count, 3).End(xlUp).Row).Value k = 1 For n = LBound(arr) To UBound(arr) Step 2 For m = LBound(arr, 2) + 2 To UBound(arr, 2) If arr(n, m) <> "" Or arr(n + 1, m) <> "" Then k = k + 1 End If Next Next ReDim arr1(1 To k, 1 To 3) k = 1 For n = LBound(arr) To UBound(arr) Step 2 For m = LBound(arr, 2) + 2 To UBound(arr, 2) If arr(n, m) <> "" Or arr(n + 1, m) <> "" Then arr1(k, 1) = arr(n + 1, 1) arr1(k, 2) = arr(n + 1, m) arr1(k, 3) = arr(n, m) k = k + 1 End If Next Next Range("M6").Resize(UBound(arr1), UBound(arr1, 2)) = arr1 Exit Sub Osh: MsgBox "Ошибка данных" End Sub
[/vba]
Можно макросом [vba]
Код
Sub Макрос1() Dim arr, arr1, n As Long, m As Long, k As Long On Error GoTo Osh arr = Range("C6:J" & Cells(Rows.Count, 3).End(xlUp).Row).Value k = 1 For n = LBound(arr) To UBound(arr) Step 2 For m = LBound(arr, 2) + 2 To UBound(arr, 2) If arr(n, m) <> "" Or arr(n + 1, m) <> "" Then k = k + 1 End If Next Next ReDim arr1(1 To k, 1 To 3) k = 1 For n = LBound(arr) To UBound(arr) Step 2 For m = LBound(arr, 2) + 2 To UBound(arr, 2) If arr(n, m) <> "" Or arr(n + 1, m) <> "" Then arr1(k, 1) = arr(n + 1, 1) arr1(k, 2) = arr(n + 1, m) arr1(k, 3) = arr(n, m) k = k + 1 End If Next Next Range("M6").Resize(UBound(arr1), UBound(arr1, 2)) = arr1 Exit Sub Osh: MsgBox "Ошибка данных" End Sub