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

Вход

Регистрация

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

 

= Мир MS Excel/Создание строки с именем по количеству проектов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Создание строки с именем по количеству проектов
ExcelUser2000 Дата: Вторник, 19.07.2022, 20:16 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте,
Есть таблица в которой за именем человека указывается несколько проектов, например 3.
Во второй вкладке хотелось бы чтобы имя человека автоматически писалось три раза в три строки с указание этих трех проектов.
Тоесть, если допустим имен 10 и суммарное кол-во проектов 40, то во вторая вкладка таблицы сгенерирует 40 строк с повторяющимися именами с указанными напротив проектами.

Буду признателен, за помощь или наводку.
 
Ответить
СообщениеЗдравствуйте,
Есть таблица в которой за именем человека указывается несколько проектов, например 3.
Во второй вкладке хотелось бы чтобы имя человека автоматически писалось три раза в три строки с указание этих трех проектов.
Тоесть, если допустим имен 10 и суммарное кол-во проектов 40, то во вторая вкладка таблицы сгенерирует 40 строк с повторяющимися именами с указанными напротив проектами.

Буду признателен, за помощь или наводку.

Автор - ExcelUser2000
Дата добавления - 19.07.2022 в 20:16
прохожий2019 Дата: Вторник, 19.07.2022, 21:01 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1298
Репутация: 327 ±
Замечаний: 0% ±

365 Beta Channel
я бы PQ использовал
 
Ответить
Сообщениея бы PQ использовал

Автор - прохожий2019
Дата добавления - 19.07.2022 в 21:01
ExcelUser2000 Дата: Вторник, 19.07.2022, 21:35 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Цитата прохожий2019, 19.07.2022 в 21:01, в сообщении № 2 ()
я бы PQ использовал

Спасибо за наводку, но видимо моих знаний PQ не достаточно, что бы реализовать главную задачу.
По большому счету всё происходящее в тиаблице это сложение и вычитание сумм, но вот именно сосздание некого репорта где имено добавляются по количеству проектов я не догоняю как сделать.
 
Ответить
Сообщение
Цитата прохожий2019, 19.07.2022 в 21:01, в сообщении № 2 ()
я бы PQ использовал

Спасибо за наводку, но видимо моих знаний PQ не достаточно, что бы реализовать главную задачу.
По большому счету всё происходящее в тиаблице это сложение и вычитание сумм, но вот именно сосздание некого репорта где имено добавляются по количеству проектов я не догоняю как сделать.

Автор - ExcelUser2000
Дата добавления - 19.07.2022 в 21:35
ExcelUser2000 Дата: Вторник, 19.07.2022, 22:10 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Если есть кто может за деньги помочь, я рад заплатить.
Спасибо.
 
Ответить
СообщениеЕсли есть кто может за деньги помочь, я рад заплатить.
Спасибо.

Автор - ExcelUser2000
Дата добавления - 19.07.2022 в 22:10
Egyptian Дата: Вторник, 19.07.2022, 23:13 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 526
Репутация: 193 ±
Замечаний: 0% ±

Excel 2013/2016
А файл-пример будет?
 
Ответить
СообщениеА файл-пример будет?

Автор - Egyptian
Дата добавления - 19.07.2022 в 23:13
ExcelUser2000 Дата: Среда, 20.07.2022, 01:13 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

А файл-пример будет?

Да, спасибо.
Прикрепил файл пример.
К сообщению приложен файл: 8241970.xlsx (12.1 Kb)
 
Ответить
Сообщение
А файл-пример будет?

Да, спасибо.
Прикрепил файл пример.

Автор - ExcelUser2000
Дата добавления - 20.07.2022 в 01:13
msi2102 Дата: Среда, 20.07.2022, 10:30 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Можно макросом
[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
[/vba]
К сообщению приложен файл: 8241970.xlsm (21.9 Kb)
 
Ответить
СообщениеМожно макросом
[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
[/vba]

Автор - msi2102
Дата добавления - 20.07.2022 в 10:30
Nic70y Дата: Среда, 20.07.2022, 11:14 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 9006
Репутация: 2369 ±
Замечаний: 0% ±

Excel 2010
формулами, по приколу, с удалением 2х строк
К сообщению приложен файл: 0474017.xlsx (13.9 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениеформулами, по приколу, с удалением 2х строк

Автор - Nic70y
Дата добавления - 20.07.2022 в 11:14
msi2102 Дата: Среда, 20.07.2022, 11:31 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Формулами если офис 2019 и выше
имя
[vba]
Код
=ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ПОДСТАВИТЬ(ЕСЛИ(E6:J13<>"";C6:C13;"");0;""));";";"</s><s>")&"</s></t>";"//s")
[/vba]

часы
[vba]
Код
=ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ПОДСТАВИТЬ(ОСТАТ(СТРОКА(E6:J13);2)*E6:J13;0;""));";";"</s><s>")&"</s></t>";"//s")
[/vba]

код
[vba]
Код
=ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ПОДСТАВИТЬ((-ОСТАТ(СТРОКА(E6:J13);2)+1)*E6:J13;0;""));";";"</s><s>")&"</s></t>";"//s")
[/vba]
К сообщению приложен файл: 2406563.xlsm (23.4 Kb)
 
Ответить
СообщениеФормулами если офис 2019 и выше
имя
[vba]
Код
=ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ПОДСТАВИТЬ(ЕСЛИ(E6:J13<>"";C6:C13;"");0;""));";";"</s><s>")&"</s></t>";"//s")
[/vba]

часы
[vba]
Код
=ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ПОДСТАВИТЬ(ОСТАТ(СТРОКА(E6:J13);2)*E6:J13;0;""));";";"</s><s>")&"</s></t>";"//s")
[/vba]

код
[vba]
Код
=ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ПОДСТАВИТЬ((-ОСТАТ(СТРОКА(E6:J13);2)+1)*E6:J13;0;""));";";"</s><s>")&"</s></t>";"//s")
[/vba]

Автор - msi2102
Дата добавления - 20.07.2022 в 11:31
msi2102 Дата: Среда, 20.07.2022, 14:32 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Ну и до кучи PQ, возможно не самый быстрый вариант, но рабочий
[vba]
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Заполнить = Table.FillUp(Источник,{"Имя"}),
    Удалить_столбцы = Table.Buffer(Table.SelectColumns(Заполнить,{"Имя", "СТ", "СТ3", "СТ4", "СТ5", "СТ6", "ПР"})),
    Группа = Table.Group(
       Удалить_столбцы,
        "Имя",     
        {{
              "Количество",
              (t) =>
              [
                c = Table.RemoveColumns(t,"Имя"),
                s = Table.ToColumns(c),
                b = List.Split(List.Combine(s),2),
                d = Table.FromRows(b,{"Код","Час"}),
                e = Table.SelectRows(d, each [Час] <> null or [Код] <> null)
              ] [e]
        }}),
    Развернуть = Table.ExpandTableColumn(Группа, "Количество", {"Час", "Код"}, {"Час", "Код"})
in
    Развернуть
[/vba]
К сообщению приложен файл: 6450109.xlsm (41.9 Kb)
 
Ответить
СообщениеНу и до кучи PQ, возможно не самый быстрый вариант, но рабочий
[vba]
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Заполнить = Table.FillUp(Источник,{"Имя"}),
    Удалить_столбцы = Table.Buffer(Table.SelectColumns(Заполнить,{"Имя", "СТ", "СТ3", "СТ4", "СТ5", "СТ6", "ПР"})),
    Группа = Table.Group(
       Удалить_столбцы,
        "Имя",     
        {{
              "Количество",
              (t) =>
              [
                c = Table.RemoveColumns(t,"Имя"),
                s = Table.ToColumns(c),
                b = List.Split(List.Combine(s),2),
                d = Table.FromRows(b,{"Код","Час"}),
                e = Table.SelectRows(d, each [Час] <> null or [Код] <> null)
              ] [e]
        }}),
    Развернуть = Table.ExpandTableColumn(Группа, "Количество", {"Час", "Код"}, {"Час", "Код"})
in
    Развернуть
[/vba]

Автор - msi2102
Дата добавления - 20.07.2022 в 14:32
ExcelUser2000 Дата: Среда, 20.07.2022, 19:40 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Ну господа, зашёл и приятно удивился. Поковыряю все варианты. Спасибо. Надеюсь разберусь без дальнейших вопросов.
 
Ответить
СообщениеНу господа, зашёл и приятно удивился. Поковыряю все варианты. Спасибо. Надеюсь разберусь без дальнейших вопросов.

Автор - ExcelUser2000
Дата добавления - 20.07.2022 в 19:40
  • Страница 1 из 1
  • 1
Поиск:

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