Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 След.
Найти крайнее значение в строке и вывести название заголовка в PQ
 
еще вариант
Код
= let
    Source = Table.RemoveColumns(Excel.CurrentWorkbook(){[Name="Запрос1"]}[Content],{"ИТОГО"}),
    fn=(_)=>List.Last(List.RemoveLastN(List.Skip(List.Zip({Record.ToList(_),Record.FieldNames(_)}),4),each _{0}=null)){1}
in
    Table.AddColumn(Source, "ИТОГО", each try fn(_) otherwise 0)
Заполнение txt либо json файла из Excel макросом, Заполнение txt файла из Excel макросом
 
вам в результате нужно получить json c ошибками в синтаксисе (так же как и в приложенном примере)?
Присвоение группы для списка значений, пропорционально их доли их количества в списке
 
небольшая поправка по формуле
Код
=ЕСЛИ([@Значение]>0;ПРОСМОТР(РАНГ([@Значение];[Значение]);МУМНОЖ(({1:2:3:4}>={1;2;3;4})*ОКРВВЕРХ(СЧЁТЕСЛИ([Значение];">0")*{0;15;35;50}%;1);{1:1:1:1});"Группа "&{"А":"Б":"С"});"Нет в рейтинге")
Присвоение группы для списка значений, пропорционально их доли их количества в списке
 
Код
=ПРОСМОТР(РАНГ.СР([@Значение];[Значение]);МУМНОЖ(({1:2:3:4}>={1;2;3;4})*ОКРВВЕРХ(СЧЁТЕСЛИ([Значение];">0")*{0;15;35;50}%;1);{1:1:1:1});"Группа "&{"А":"Б":"С"})

На всякий случай, в PQ
Код
let
    Source     = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content][[Значение]],
    Filtered   = Table.SelectRows(Source, each [Значение] <> 0),
    Sorted     = Table.Sort(Source,{{"Значение", Order.Descending}}),
    Indexed    = Table.AddIndexColumn(Sorted, "i", 0),
    RowCount   = Table.RowCount(Filtered),
    ABC        = List.Transform({0.15,0.35,0.50},each Number.Round(RowCount*_)),
    fn=(i)     =>List.Sum(List.Range(ABC,0,i)),
    Cumulative = List.Buffer(List.Generate(()=>[i=1,s=fn(i)], each [i]<=3,each [i=[i]+1,s=fn(i)],each [s])),
    Grouped    = Table.Group(Indexed, {"i"}, {{"Доля", each Table.RowCount(_)/RowCount, Percentage.Type},{"Количество",each Table.RowCount(_), type number}},0,(a,b)=>List.PositionOf(Cumulative,b[i])+1)
in
    Grouped
SendInput не работает в x64
 
и так тоже можно
Код
Const VK_H = 72: Const VK_E = 69: Const VK_L = 76: Const VK_O = 79
Const KEYEVENTF_KEYUP = &H2: Const INPUT_MOUSE = 0: Const INPUT_KEYBOARD = 1: Const INPUT_HARDWARE = 2
Type HARDWAREINPUT: uMsg As Long: wParamL As Integer: wParamH As Integer: End Type
#If VBA7 And Win64 Then
    Declare PtrSafe Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As Any, ByVal cbsize As Long) As Long
#Else
    Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As Any, ByVal cbsize As Long) As Long
#End If
Type KEYBDINPUT
    wVk As Integer: wScan As Integer
    #If VBA7 And Win64 Then
        dwFlags As LongPtr: time As LongLong: dwExtraInfo As LongPtr
    #Else
        dwFlags As Long: time As Long: dwExtraInfo As Long
    #End If
End Type

Type MOUSEINPUT
    dX As Long: dY As Long: mouseData As Long: dwFlags As Long
    #If VBA7 And Win64 Then
        time As LongLong: dwExtraInfo As LongPtr
    #Else
        time As Long: dwExtraInfo As Long
    #End If
End Type
Type GENERALINPUT
    dwType As Long: kbi As KEYBDINPUT
End Type

Sub go1()
    Dim inputs() As GENERALINPUT
    AppActivate "Блокнот"
    ReDim inputs(4)
    
    For Each Key In Array(VK_H, VK_E, VK_L, VK_L, VK_O)
        inputs(i).dwType = INPUT_KEYBOARD
        inputs(i).kbi.dwFlags = KEYEVENTF_KEYUP
        inputs(i).kbi.wVk = Key
        i = i + 1
    Next
    
    SendInput 5, inputs(0), Len(inputs(0)) + 8
End Sub
Изменено: Андрей Лящук - 26 Мар 2020 17:18:41
Как заменить формулу в Гугл таблице на значение этой формулы автоматически?
 
он в utf8, чтобы в excel нормально отобразился нужно импортировать через мастер импорта текста
Как заменить формулу в Гугл таблице на значение этой формулы автоматически?
 
проверил, работает, скачивается
Форматирование сложного числа с разбивкой по ячейкам
 
Код
=ЕСЛИОШИБКА(--ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(" "&ИНДЕКС(2:2;ПОИСКПОЗ("Score";$1:$1;));"(";);",";);":";" ");")";);" ";ПОВТОР(" ";99));(СТОЛБЕЦ()-ПОИСКПОЗ("Score";$1:$1;))*99;99);)
Как заменить формулу в Гугл таблице на значение этой формулы автоматически?
 
alex11660, используйте ссылку типа https://docs.google.com/spreadsheets/d/15pZdZXxAFC9tOwIg4zvGq8WJwXf_CW8U0CEaOvjp­KPE/export?format=csv&id=15pZdZXxAFC9tOwIg4zvGq8WJwXf_CW8U0CEaOvjpKPE&g­id=934109970
Форматирование сложного числа с разбивкой по ячейкам
 
Цитата
=ЕСЛИОШИБКА(--ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(" "&ссылка_на_ячейку_с_данными_с_закреплением_столбца;"(";);",";);":";" ");")";);" ";ПОВТОР(" ";99));СТОЛБЕЦ(ссылка_на_любую_ячейку_в_1_столбце)*99;99); )
Изменено: Андрей Лящук - 25 Мар 2020 15:25:08
Форматирование сложного числа с разбивкой по ячейкам
 
Код
=ЕСЛИОШИБКА(--ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(" "&$A2;"(";);",";);":";" ");")";);" ";ПОВТОР(" ";99));СТОЛБЕЦ(A2)*99;99);)
Как заменить формулу в Гугл таблице на значение этой формулы автоматически?
 
Пробуйте публиковать в CSV
Увеличение и уменьшение значения ячейки с определенным шагом при нажатии "+" и "-" на клавиатуре
 
В модуль ЭтаКнига
Код
Private Const addr$ = "A1:A3"
Private Const d% = 3
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Call b(Sh, Selection)
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Call a
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Call b(Sh, Target)
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
     Call b(ActiveSheet, Selection)
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    Call a
End Sub
Private Sub a()
    Application.OnKey "{107}"
    Application.OnKey "{109}"
    Application.OnKey "{+}"
    Application.OnKey "{-}"
End Sub
Private Sub b(ByVal Sh As Object, ByVal Target As Range)
    Call a
    If Not Sh Is Лист1 Then Exit Sub
    If Intersect(Target, Sh.Range(addr)) Is Nothing Then Exit Sub
    Application.OnKey "{107}", "'" & Me.CodeName & ".c " & d & ", [" & addr & "]'"
    Application.OnKey "{109}", "'" & Me.CodeName & ".c " & -d & ", [" & addr & "]'"
    Application.OnKey "{+}", "'" & Me.CodeName & ".c " & d & ", [" & addr & "]'"
    Application.OnKey "{-}", "'" & Me.CodeName & ".c " & -d & ", [" & addr & "]'"
End Sub
Sub c(n, ByRef r As Range)
    With Intersect(Selection, r)
        .Value = Evaluate(.Address(, , Application.ReferenceStyle) & "+" & n)
    End With
End Sub
Изменено: Андрей Лящук - 25 Мар 2020 11:38:31
Power Query Замена данных в массиве на основе справочника
 
до кучи
Код
let
    Source = 
        Excel.CurrentWorkbook(){[Name="Справочник"]}[Content],
    Dictionary = 
        Table.RenameColumns(Table.TransformColumns(
            Source,
            let 
                a = Excel.CurrentWorkbook(){[Name="Справочник2"]}[Content], 
                b = Record.FromList(Table.ToRecords(Table.RemoveColumns(a,{"Наименование"})),a[Наименование]), 
                c = List.Skip(Table.ColumnNames(Source),2) 
            in 
                List.Transform(
                    c,
                    (s)=>
                    { s,
                      each try 
                          Expression.Evaluate("#"""&Text.Replace(Text.From(_)," и ","""["&s&"]+#""")&"""["&s&"]",b)
                      otherwise 
                          null
                    }
                )
        ),{{"Наименование","a"},{"Тип","b"}}),
    Schedule = 
        Excel.CurrentWorkbook(){[Name="График"]}[Content][[Дата],[Наименование],[Тип]],
    Joined = 
        Table.Join(Schedule,{"Наименование","Тип"},Dictionary,{"a","b"},JoinKind.LeftOuter),
    Result = 
        Table.TransformColumnTypes(Table.RemoveColumns(Joined,{"a", "b"}),{{"Дата", type date}})
in
    Result
Подсчете пациентов, заболевших ОРВИ в определенном возрастном диапазоне
 
Вариант с доп. столбцом и сводной через мастер сводных таблиц и диаграмм
Добавление значения по последней дате, Power Query
 
небольшая корректировка
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    Typed = Table.TransformColumnTypes(Source,{{"Дата", type datetime}}),
    Grouped = Table.Group(Typed, {"Товар"}, {{"a", each Table.Max(_,"Дата")}}),
    Result = Table.FromRecords(Grouped[a])
in
    Result
Добавление значения по последней дате, Power Query
 
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    Typed = Table.TransformColumnTypes(Source,{{"Дата", type date}}),
    Grouped = Table.Group(Typed, {"Дата", "Товар"}, {{"a", each Table.Max(_,"Дата")}}),
    Result = Table.FromRecords(Grouped[a])
in
    Result
Заливка фигуры по условию
 
Здравствуйте
в стандартном модуле UDF
Код
Function ColorByState(ByRef a, b) As Range
    With Application.Caller.Parent
        Set ColorByState = .Cells.SpecialCells(xlCellTypeBlanks).Cells(1, 1)
        With .Shapes(b).Fill.ForeColor
            Select Case LCase(a)
                Case "открыта": .RGB = 65280
                Case "закрыта": .RGB = 255
            End Select
        End With
    End With
End Function

в диспетчере имен 2 имени
Код
x   =ColorByState(Лист1!$A$2;"Flowchart: Collate 1")
y   =ColorByState(Лист1!$A$3;"Flowchart: Collate 2")

Флоучарты ссылаются на них (для 1го, например, выделяем, в строке формул пишем =x жмем Enter)
как обнулить XMLHTTP от кешированных значений?
 
а так?
Код
#If VBA7 Then
    Private Declare PtrSafe Function InternetSetOption _
        Lib "wininet.dll" _
        Alias "InternetSetOptionA" ( _
            ByVal hInternet As LongPtr, _
            ByVal lOption As Long, _
            ByRef lpBuffer As Any, _
            ByVal lBufferLength As Long _
        ) As Long
#Else
    Private Declare Function InternetSetOption _
        Lib "wininet.dll" _
        Alias "InternetSetOptionA" ( _
            ByVal hInternet As Long, _
            ByVal lOption As Long, _
            ByRef lpBuffer As Any, _
            ByVal lBufferLength As Long _
        ) As Long
#End If
Private Enum INTERNET_OPTION 'some of the option flags which used with the InternetQueryOption and InternetSetOption functions.
    END_BROWSER_SESSION = &H2A          'Flushes entries not in use from the password cache on the hard disk drive.
                                            'Also resets the cache time used when the synchronization mode is once-per-session.
                                            'No buffer is required for this option. This is used by InternetSetOption.
    RESET_URLCACHE_SESSION = &H3C       'Starts a new cache session for the process. No buffer is required.
                                            'This is used by InternetSetOption. This option is reserved for internal use only.
    SUPPRESS_BEHAVIOR = &H51            'A general purpose option that is used to suppress behaviors on a process-wide basis.
                                            'The lpBuffer parameter of the function must be a pointer to a DWORD containing the specific
                                            'behavior to suppress. This option cannot be queried with InternetQueryOption
End Enum

Private Enum INTERNET_SUPPRESS 'list of permitted values for InternetSetOption's INTERNET_OPTION_SUPPRESS_BEHAVIOR(&H51) option
    RESET_ALL = 0                       'Disables all suppressions, re-enabling default and configured behavior.
                                            'This option is the equivalent of setting INTERNET_SUPPRESS_COOKIE_POLICY_RESET
                                            'and INTERNET_SUPPRESS_COOKIE_PERSIST_RESET individually.
                                            'Version: Requires Internet Explorer 6.0 or later.
    COOKIE_POLICY = 1                   'Ignores any configured cookie policies and allows cookies to be set.
                                            'Version: Requires Internet Explorer 6.0 or later.
    COOKIE_POLICY_RESET = 2             'Disables the INTERNET_SUPPRESS_COOKIE_POLICY suppression, permitting the evaluation
                                            'of cookies according to the configured cookie policy.
                                            'Version: Requires Internet Explorer 6.0 or later.
    COOKIE_PERSIST = 3                  'Suppresses the persistence of cookies, even if the server has specified them as persistent.
                                            'Version: Requires Internet Explorer 8.0 or later.
    COOKIE_PERSIST_RESET = 4            'Disables the INTERNET_SUPPRESS_COOKIE_PERSIST suppression, re-enabling the persistence
                                            'of cookies. Any previously suppressed cookies will not become persistent.
End Enum

Sub test2()
    Dim lRet&
    lRet = InternetSetOption(0, INTERNET_OPTION.END_BROWSER_SESSION, ByVal 0&, 0) And _
           InternetSetOption(0, INTERNET_OPTION.SUPPRESS_BEHAVIOR, INTERNET_SUPPRESS.COOKIE_PERSIST, 4) And _
           InternetSetOption(0, INTERNET_OPTION.RESET_URLCACHE_SESSION, ByVal 0&, 0)
    If lRet Then Debug.Print "Success"
End Sub

по поводу URLCACHE не уверен - из той ли оперы?...
как обнулить XMLHTTP от кешированных значений?
 
Код
Public Enum IE_Cleaner_Flag
    CLEAR_HISTORY = &H1               'Clears history
    CLEAR_COOKIES = &H2               'Clears cookies
    Clear_Cache = &H4                 'Clears Temporary Internet Files folder
    CLEAR_CACHE_ALL = &H8             'Clears offline favorites and download history
    CLEAR_FORM_DATA = &H10            'Clears saved form data for form auto-fill-in
    CLEAR_PASSWORDS = &H20            'Clears passwords saved for websites
    CLEAR_PHISHING_FILTER = &H40      'Clears phishing filter data
    CLEAR_RECOVERY_DATA = &H80        'Clears webpage recovery data
    CLEAR_PRIVACY_ADVISOR = &H800     'Clears tracking data
    CLEAR_SHOW_NO_GUI = &H100         'Do not show a GUI when running the cache clearing
    CLEAR_USE_NO_THREAD = &H200       'Do not use multithreading for deletion
    CLEAR_PRIVATE_CACHE = &H400       'Valid only when browser is in private browsing mode
    CLEAR_DELETE_ALL = &H1000         'Deletes data stored by add-ons
    CLEAR_PRESERVE_FAVORITES = &H2000 'Preserves cached data for "favorite" websites
    CLEAR_CACHE_OPTIONS = &H9FF
End Enum
#If VBA7 Then
    Private Declare PtrSafe Function InternetSetOption _
        Lib "wininet.dll" _
        Alias "InternetSetOptionA" ( _
            ByVal hInternet As LongPtr, _
            ByVal lOption As Long, _
            ByRef lpBuffer As Any, _
            ByVal lBufferLength As Long _
        ) As Long
#Else
    Private Declare Function InternetSetOption _
        Lib "wininet.dll" _
        Alias "InternetSetOptionA" ( _
            ByVal hInternet As Long, _
            ByVal lOption As Long, _
            ByRef lpBuffer As Any, _
            ByVal lBufferLength As Long _
        ) As Long
#End If
Private Const INTERNET_OPTION_END_BROWSER_SESSION = &H2A

Public Sub ClearIE(Flag As IE_Cleaner_Flag)
    Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess " & Flag
End Sub

Sub test()
    ClearIE CLEAR_SHOW_NO_GUI Or CLEAR_HISTORY Or CLEAR_COOKIES Or CLEAR_CACHE_ALL
End Sub

Sub test2()
    Dim lRet&
    lRet = InternetSetOption(0, INTERNET_OPTION_END_BROWSER_SESSION, ByVal 0&, 0)
    If lRet Then Debug.Print "Success"
End Sub

еще тут можно посмотреть использование других флагов для InternetSetOption
Изменено: Андрей Лящук - 19 Мар 2020 03:00:56
Как создать всплывающий список, после введения данных, Расчёт данных после выбора из всплывающего списка
 
Цитата
БМВ написал:
как координаты ячейки на экране точно получить?
Код
Public Type Rect
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Public Function GetRectForRng(ByVal Target As Range) As Rect
    Dim Index As Integer
    Dim Rect As Rect
    With ActiveWindow
        For Index = 1 To .Panes.Count
            If Not Intersect(Target, .Panes(Index).VisibleRange) Is Nothing Then
                With .Panes(Index)
                    Rect.Left = .PointsToScreenPixelsX(Target.Left + 1)
                    Rect.Top = .PointsToScreenPixelsY(Target.Top + 1)
                    Rect.Right = .PointsToScreenPixelsX(Target.Left + Target.Width - 1)
                    Rect.Bottom = .PointsToScreenPixelsY(Target.Top + Target.Height - 1)
                End With
                GetRectForRng = Rect
                Exit Function
            End If
        Next
    End With
End Function
как из Excel запустить бат, который обращается к wget
 
нашел я тут Selenium.WebDriver.3.141.0
Извлек папки из \lib в %Appdata%\WebDriver Chromedriver.exe лежит в %windir%\system32  в Application.Path лежит excel.exe.config с содержимым
Код
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="0"/>
  </startup>
</configuration>



модуль utils
Код
Const NetRef = False
Const NetVer = "0"

Option Explicit

Private Sub auto_close()
    Dim b As Boolean
    With ThisWorkbook
        b = .Saved
        SetConst "NetRef", False
        SetConst "NetVer", """0"""
        On Error Resume Next
        With .VBProject.References
            .Remove .Item("mscoree")
            .Remove .Item("mscorlib")
        End With
        If b Then .Save
    End With
End Sub

Private Function netdll() As String
    Dim ver$
    ver = "net" & Mid(Replace(NetVersion, ".", ""), 2, 2)
    netdll = Environ("appdata") & "\Webdriver\" & ver & "\WebDriver.dll"
End Function

Function CreateObject2(typeName As String) As Object
    If Not NetRef Then
        AddNetRef
    End If
    On Error Resume Next
    Set CreateObject2 = Application.Run("NetLib.Wrapper", netdll, typeName)
End Function

Private Function NetVersion$()
    Const HKEY_LOCAL_MACHINE = &H80000002
    Dim ver$, arrSubKeys As Variant
    If Not NetRef Then
        With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
            .EnumKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\.NETFramework", arrSubKeys
            arrSubKeys = Filter(arrSubKeys, "v", 1, vbTextCompare)
            ver = arrSubKeys(UBound(arrSubKeys))
            SetConst "NetVer", """" & ver & """"
        End With
    Else
        ver = NetVer
    End If
    NetVersion = ver
End Function

Private Sub AddNetRef()
    #If Win64 Then
        Const s$ = "64"
    #Else
        Const s$ = ""
    #End If
    Dim sNetFWDir$, iRefCount%
    sNetFWDir = Environ("windir") & "\Microsoft.NET\Framework" & s & "\" & NetVersion
    On Error Resume Next
    With ThisWorkbook.VBProject.References
        .Remove .Item("mscoree"): .Remove .Item("mscorlib")
        iRefCount = .Count
        .AddFromFile sNetFWDir & "\mscoree.tlb": .AddFromFile sNetFWDir & "\mscorlib.tlb"
        If .Count - iRefCount = 2 Then SetConst "NetRef", True
    End With
End Sub

Private Sub SetConst(ByVal sName$, ByVal v)
    Dim lineNum&, newLine$
    newLine = "Const " & sName & " = " & v
    With ThisWorkbook.VBProject.VBComponents("utils").CodeModule
        If .Find(sName, lineNum, 7, .CountOfDeclarationLines, 7 + Len(sName), 1, 1) Then
            .ReplaceLine lineNum, newLine
        Else
            .InsertLines 1, newLine
        End If
    End With
End Sub

Модуль NetLib
Код
Function Wrapper(netdll As String, typeName As String) As Object
    On Error Resume Next
    Static domain As mscorlib.AppDomain
    If domain Is Nothing Then
        Dim host As New mscoree.CorRuntimeHost
        host.Start
        host.GetDefaultDomain domain
    End If
    Set Wrapper = domain.CreateInstanceFrom(netdll, typeName).Unwrap
End Function


Код
Private Sub test_Chrome()
    Set driver = CreateObject2("OpenQA.Selenium.Chrome.ChromeDriver")
    driver.Navigate().GoToUrl "https://google.co.uk"
    driver.Quit
End Sub

Полет нормальный
Изменено: Андрей Лящук - 18 Мар 2020 22:32:45
Макрос: функция Range.Replace, задать условие поиска
 
Без файла примера только так
Код
Sub dd()
    On Error Resume Next
    ActiveSheet.UsedRange.SpecialCells(2, 1) = 0
End Sub
как из Excel запустить бат, который обращается к wget
 
doober, тот, который написан в посте - однозначно да, и он работал. Файл Examples.xlsm выложил "as is" из папки Selenium Basic, для ознакомления. То, что не указал, что для разных версий хрома свой драйвер - мое упущение. Сейчас есть 81-я Beta, и, в том числе, для нее есть свой ChromeDriver тут
Можно ли EXCEL подружить с Chrome ?
 
bedvit, тут выкладывал
Изменить формат даты и времени, Формат даты и времени (ДД.ММ.ГГ Ч:ММ) заменить на (Ч:ММ ГГГГ.ММ.ДД)
 
Создание пользовательского числового формата
PQ. Возврат значения строки таблицы-фрагмента по условию
 
Код
let
    Source = Excel.CurrentWorkbook(){[Name="ИсходныеДанные"]}[Content],
    Group = Table.AddIndexColumn(Table.Group(Source, {"Изометричка", "КОМПЛЕКТ"}, {{"a", each [КОМПЛЕКТ]{0} & " (" & Text.Combine(List.Transform([#"Л."],Text.From),", ") &")"},{"b" , each List.Sum([Масса])},{"c",Table.RowCount}}),"d",1,1),
    Group1 = Table.Group(Group, {"Изометричка"}, {{"Исходный комплект", each (if List.Count(List.Distinct([c]))=1 then _{0} else Table.Max(_,(x,y)=>Number.From(if x[c]<y[c] then x[d]>y[d] else 1)))[КОМПЛЕКТ]},{"Ссылки на РД",each Text.Combine([a],"; ")},{"Масса Трубопровода", each List.Sum([b])}}),
    Duplicate = Table.DuplicateColumn(Group1, "Исходный комплект", "Модель копирования")
in
    Duplicate
Изменено: Андрей Лящук - 13 Мар 2020 04:05:18
PQ. Возврат значения строки таблицы-фрагмента по условию
 
Код
let
    Source = Excel.CurrentWorkbook(){[Name="ИсходныеДанные"]}[Content],
    Group = ((t)=>Table.AddIndexColumn(t,"d",Table.RowCount(t),-1))(Table.Group(Source, {"Изометричка", "КОМПЛЕКТ"}, {{"a", each [КОМПЛЕКТ]{0} & " (" & Text.Combine(List.Transform([#"Л."],Text.From),", ") &")"},{"b" , each List.Sum([Масса])},{"c",Table.RowCount}})),
    Group1 = Table.Group(Group, {"Изометричка"}, {{"Исходный комплект", each (if List.Count(List.Distinct([c]))=1 then _{0} else Table.Max(_,each Text.FromBinary(#binary({[c],[d]}))))[КОМПЛЕКТ]},{"Ссылки на РД",each Text.Combine([a],"; ")},{"Масса Трубопровода", each List.Sum([b])}}),
    Duplicate = Table.DuplicateColumn(Group1, "Исходный комплект", "Модель копирования")
in
    Duplicate
PQ. Возврат значения строки таблицы-фрагмента по условию
 
Код
let
    Source = Excel.CurrentWorkbook(){[Name="ИсходныеДанные"]}[Content],
    Group = Table.Group(Source, {"Изометричка", "КОМПЛЕКТ"}, {{"a", each [КОМПЛЕКТ]{0} & " (" & Text.Combine(List.Transform([#"Л."],Text.From),", ") &")"},{"b" , each List.Sum([Масса])},{"c",each Table.RowCount(_)}}),
    Group1 = Table.Group(Group, {"Изометричка"}, {{"Исходный комплект", each (if List.Count(List.Distinct([c]))=1 then _{0} else Table.Max(_,"c"))[КОМПЛЕКТ]},{"Ссылки на РД",each Text.Combine([a],"; ")},{"Масса Трубопровода", each List.Sum([b])}}),
    Duplicate = Table.DuplicateColumn(Group1, "Исходный комплект", "Модель копирования")
in
    Duplicate
PQ. Возврат значения строки таблицы-фрагмента по условию
 
Код
let
    Source = Excel.CurrentWorkbook(){[Name="ИсходныеДанные"]}[Content],
    Group = Table.Group(Source, {"Изометричка", "КОМПЛЕКТ"}, {{"a", each [КОМПЛЕКТ]{0} & " (" & Text.Combine(List.Transform([#"Л."],Text.From),", ") &")"},{"b" , each List.Sum([Масса])},{"c",each Table.RowCount(_)}}),
    Group1 = Table.Group(Group, {"Изометричка"}, {{"Исходный комплект", each Table.Max(_,"c")[КОМПЛЕКТ]},{"Ссылки на РД",each Text.Combine([a],"; ")},{"Масса Трубопровода", each List.Sum([b])}}),
    Duplicate = Table.DuplicateColumn(Group1, "Исходный комплект", "Модель копирования")
in
    Duplicate
Изменено: Андрей Лящук - 7 Мар 2020 01:42:57
Страницы: 1 2 3 4 5 6 7 8 9 10 11 След.
Наверх