для разнообразия, UDF в Power Query SplitAndExpand [vba]
Код
(Таблица as table,НомСтолб as number, Разделитель as text) as table => let Столбец = List.Range(Table.ColumnNames(Таблица),НомСтолб,1){0}, fn = Splitter.SplitTextByDelimiter(Разделитель, QuoteStyle.None), Разделить = Table.TransformColumns(Таблица,{Столбец, fn}), Результат = Table.ExpandListColumn(Разделить,Столбец) in Результат
[/vba] Использование в запросе [vba]
Код
let Источник = SplitAndExpand(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],1,",") in Источник
[/vba]
для разнообразия, UDF в Power Query SplitAndExpand [vba]
Код
(Таблица as table,НомСтолб as number, Разделитель as text) as table => let Столбец = List.Range(Table.ColumnNames(Таблица),НомСтолб,1){0}, fn = Splitter.SplitTextByDelimiter(Разделитель, QuoteStyle.None), Разделить = Table.TransformColumns(Таблица,{Столбец, fn}), Результат = Table.ExpandListColumn(Разделить,Столбец) in Результат
[/vba] Использование в запросе [vba]
Код
let Источник = SplitAndExpand(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],1,",") in Источник
AngelOfLegend, ну дык если в ваш последний файл перенести UDF и запрос из файла отсюда и отформатировать исходные данные умной таблицей с заголовками (у нее должно быть название Таблица1), то на выходе получится именно такой результат
AngelOfLegend, ну дык если в ваш последний файл перенести UDF и запрос из файла отсюда и отформатировать исходные данные умной таблицей с заголовками (у нее должно быть название Таблица1), то на выходе получится именно такой результатkrosav4ig
Выделить свои столбцы (A1:C8), Данные>Работа с данными>Удалить дубликаты, поставить галку "Мои данные содержат заголовки", тык по кнопке Снять выделение, поставить галку Столбец1, ОК
Выделить свои столбцы (A1:C8), Данные>Работа с данными>Удалить дубликаты, поставить галку "Мои данные содержат заголовки", тык по кнопке Снять выделение, поставить галку Столбец1, ОКkrosav4ig
можно сводной создал именованный диапазон tbl (График!$D$6:$AU$14), по ней построил консолидированную сводную (через мастер сводных таблиц и диаграмм)
можно сводной создал именованный диапазон tbl (График!$D$6:$AU$14), по ней построил консолидированную сводную (через мастер сводных таблиц и диаграмм)krosav4ig
Мдя... Это в какой же "умной" книжке вы такое задание нашли? Задание само по себе, может и нормальное, тока сформулировано ..... решаетя одной формулой, содержащей 1 цифру и 3 функции выделяем A1:H8, в строку формул пишем
Код
=2^ABS(СТОЛБЕЦ()-СТРОКА())
и жмем Ctrl+Enter
Мдя... Это в какой же "умной" книжке вы такое задание нашли? Задание само по себе, может и нормальное, тока сформулировано ..... решаетя одной формулой, содержащей 1 цифру и 3 функции выделяем A1:H8, в строку формул пишем
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name <> "Лист1" Then Application.ScreenUpdating = False Select Case Sheets("Лист1").[a2] Case 1 Columns("a:k").Hidden = False Columns("l:aa").Hidden = True Columns("ab:ak").Hidden = True Case 2 Columns("a:k").Hidden = True Columns("l:aa").Hidden = False Columns("ab:ak").Hidden = True Case 3 Columns("a:k").Hidden = True Columns("l:aa").Hidden = True Columns("ab:ak").Hidden = False Case Else Columns("a:k").Hidden = False Columns("l:aa").Hidden = False Columns("ab:ak").Hidden = False End Select Application.Goto Cells.SpecialCells(12).Areas(1).Cells(1, 1), 1 Application.ScreenUpdating = True End If End Sub
[/vba] UPD Фигню спорол, исправил
Здравствуйте Так нужно?[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name <> "Лист1" Then Application.ScreenUpdating = False Select Case Sheets("Лист1").[a2] Case 1 Columns("a:k").Hidden = False Columns("l:aa").Hidden = True Columns("ab:ak").Hidden = True Case 2 Columns("a:k").Hidden = True Columns("l:aa").Hidden = False Columns("ab:ak").Hidden = True Case 3 Columns("a:k").Hidden = True Columns("l:aa").Hidden = True Columns("ab:ak").Hidden = False Case Else Columns("a:k").Hidden = False Columns("l:aa").Hidden = False Columns("ab:ak").Hidden = False End Select Application.Goto Cells.SpecialCells(12).Areas(1).Cells(1, 1), 1 Application.ScreenUpdating = True End If End Sub
он легко лечится и, кстати, не обязательно сохранять как надстройку, достаточно установить свойство IsAddin при открытии PERSONAL.XLSB в стандартный модуль личной книги макросов [vba]
Код
Sub Auto_Open() ThisWorkbook.IsAddin = True Application.OnKey "%{F8}", "ShowMacro" End Sub Sub ShowMacro() Dim wb As Workbook Set wb = ActiveWorkbook Application.ScreenUpdating = False With ThisWorkbook .IsAddin = False wb.Activate Application.CommandBars.ExecuteMso "PlayMacro" DoEvents .IsAddin = True End With Application.ScreenUpdating = True End Sub
он легко лечится и, кстати, не обязательно сохранять как надстройку, достаточно установить свойство IsAddin при открытии PERSONAL.XLSB в стандартный модуль личной книги макросов [vba]
Код
Sub Auto_Open() ThisWorkbook.IsAddin = True Application.OnKey "%{F8}", "ShowMacro" End Sub Sub ShowMacro() Dim wb As Workbook Set wb = ActiveWorkbook Application.ScreenUpdating = False With ThisWorkbook .IsAddin = False wb.Activate Application.CommandBars.ExecuteMso "PlayMacro" DoEvents .IsAddin = True End With Application.ScreenUpdating = True End Sub
[/vba]и вместо тыканья по ленте жать Alt+F8krosav4ig
Sub dd() Dim arr As Variant, arr1 As Variant, i&, s$ With [A1].CurrentRegion With Intersect(.Columns("D").Offset(3), .EntireRow) arr = .Value: arr1 = .Offset(, 1).Value With CreateObject("vbscript.regexp") .Pattern = "([0-99]+)?(\s?\S+).*" For i = 1 To UBound(arr) s = "trim(""$2 ""& " & arr1(i, 1) & "*text(0$1,""0;;1""))" arr(i, 1) = Evaluate(.Replace(arr(i, 1), s)) Next End With Application.ScreenUpdating = False: Application.DisplayAlerts = False .Value = arr: .TextToColumns .Cells(1), 1, , , , , , 1 Application.DisplayAlerts = True: Application.ScreenUpdating = True End With End With End Sub
[/vba]
до кучи [vba]
Код
Sub dd() Dim arr As Variant, arr1 As Variant, i&, s$ With [A1].CurrentRegion With Intersect(.Columns("D").Offset(3), .EntireRow) arr = .Value: arr1 = .Offset(, 1).Value With CreateObject("vbscript.regexp") .Pattern = "([0-99]+)?(\s?\S+).*" For i = 1 To UBound(arr) s = "trim(""$2 ""& " & arr1(i, 1) & "*text(0$1,""0;;1""))" arr(i, 1) = Evaluate(.Replace(arr(i, 1), s)) Next End With Application.ScreenUpdating = False: Application.DisplayAlerts = False .Value = arr: .TextToColumns .Cells(1), 1, , , , , , 1 Application.DisplayAlerts = True: Application.ScreenUpdating = True End With End With End Sub