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

Вход

Регистрация

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

 

= Мир MS Excel/Записи участника (krosav4ig) - Мир MS Excel

Старая форма входа
Мир MS Excel » Записи участника » krosav4ig [2347]
Результаты поиска
krosav4ig Дата: Вторник, 20.08.2019, 21:55 | Сообщение № 2141 | Тема: Построение квадрата Ганна 9
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
у меня так и не нашлось времени сократить свою формулу в 325 символов
Код
=ЕСЛИ(ABS($A$1-СТОЛБЕЦ())>ABS($A$1-СТРОКА());(($A$1-СТОЛБЕЦ())^2-(-1)^(СТОЛБЕЦ()>$A$1)*($A$1-СТОЛБЕЦ()))*4+($A$1-СТОЛБЕЦ())*(-5)^(СТОЛБЕЦ()>$A$1)+1+($A$1-СТРОКА())*(-1)^(СТОЛБЕЦ()>$A$1);(($A$1-СТРОКА())^2-(-1)^(СТРОКА()>$A$1)*($A$1-СТРОКА()))*4+3*(-7/3)^(СТРОКА()>$A$1)*($A$1-СТРОКА())+1+($A$1-СТОЛБЕЦ())*(-1)^(СТРОКА()<$A$1))


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеу меня так и не нашлось времени сократить свою формулу в 325 символов
Код
=ЕСЛИ(ABS($A$1-СТОЛБЕЦ())>ABS($A$1-СТРОКА());(($A$1-СТОЛБЕЦ())^2-(-1)^(СТОЛБЕЦ()>$A$1)*($A$1-СТОЛБЕЦ()))*4+($A$1-СТОЛБЕЦ())*(-5)^(СТОЛБЕЦ()>$A$1)+1+($A$1-СТРОКА())*(-1)^(СТОЛБЕЦ()>$A$1);(($A$1-СТРОКА())^2-(-1)^(СТРОКА()>$A$1)*($A$1-СТРОКА()))*4+3*(-7/3)^(СТРОКА()>$A$1)*($A$1-СТРОКА())+1+($A$1-СТОЛБЕЦ())*(-1)^(СТРОКА()<$A$1))

Автор - krosav4ig
Дата добавления - 20.08.2019 в 21:55
krosav4ig Дата: Среда, 21.08.2019, 14:07 | Сообщение № 2142 | Тема: Снять выделение в Комбоксе
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Добрый день
как убрать выделение при запуске формы.
в UserForm_Initialize удалить строки, которые выделение устанавливают (содержащие [vba]
Код
comboComments.ListIndex =
[/vba])


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДобрый день
как убрать выделение при запуске формы.
в UserForm_Initialize удалить строки, которые выделение устанавливают (содержащие [vba]
Код
comboComments.ListIndex =
[/vba])

Автор - krosav4ig
Дата добавления - 21.08.2019 в 14:07
krosav4ig Дата: Среда, 21.08.2019, 19:49 | Сообщение № 2143 | Тема: Снять выделение в Комбоксе
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Тогда ошибка:
Compile error:
Case without Select Case

ну дык зачем было удалять строку
[vba]
Код
    Select Case comboComments.ListIndex
[/vba]?
появилась пустая строка вверху ее тоже надо убрать.

Кто вам мешает это сделать?
Главное чтобы нужная задачка выполнялась.
читаем заголовок темы и первый пост
Снять выделение в Комбоксе

как убрать выделение при запуске формы
код из #7 на 100% этой задаче соответствует
снятие выделения комбобокса
[vba]
Код
comboComments.ListIndex = -1
[/vba]напишете эту строку сами там, где вам нужно выделение снять


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
Тогда ошибка:
Compile error:
Case without Select Case

ну дык зачем было удалять строку
[vba]
Код
    Select Case comboComments.ListIndex
[/vba]?
появилась пустая строка вверху ее тоже надо убрать.

Кто вам мешает это сделать?
Главное чтобы нужная задачка выполнялась.
читаем заголовок темы и первый пост
Снять выделение в Комбоксе

как убрать выделение при запуске формы
код из #7 на 100% этой задаче соответствует
снятие выделения комбобокса
[vba]
Код
comboComments.ListIndex = -1
[/vba]напишете эту строку сами там, где вам нужно выделение снять

Автор - krosav4ig
Дата добавления - 21.08.2019 в 19:49
krosav4ig Дата: Среда, 21.08.2019, 21:23 | Сообщение № 2144 | Тема: Снять выделение в Комбоксе
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
ну и до кучи, если форма немодальная, то достаточно просто .SetFocus [vba]
Код
Private Sub UserForm_Initialize()
   '   Fill the ComboBoxes
    With comboComments
        .List = Array("Только индикатор", "Скрыть", "Показать")
    End With
    '   Get the current settings
    With Parent
        cbFullScreen = .DisplayFullScreen
        comboComments.ListIndex = .DisplayCommentIndicator + 1
    End With
End Sub
Private Sub comboComments_Change()
    With comboComments
        .SetFocus
        Application.DisplayCommentIndicator = .ListIndex - 1
    End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениену и до кучи, если форма немодальная, то достаточно просто .SetFocus [vba]
Код
Private Sub UserForm_Initialize()
   '   Fill the ComboBoxes
    With comboComments
        .List = Array("Только индикатор", "Скрыть", "Показать")
    End With
    '   Get the current settings
    With Parent
        cbFullScreen = .DisplayFullScreen
        comboComments.ListIndex = .DisplayCommentIndicator + 1
    End With
End Sub
Private Sub comboComments_Change()
    With comboComments
        .SetFocus
        Application.DisplayCommentIndicator = .ListIndex - 1
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 21.08.2019 в 21:23
krosav4ig Дата: Среда, 21.08.2019, 21:25 | Сообщение № 2145 | Тема: Снять выделение в Комбоксе
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Run-time error '424':
Object required
на форму нужно поместить невидимый текстбокс с именем TextBox1


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 21.08.2019, 21:26
 
Ответить
Сообщение
Run-time error '424':
Object required
на форму нужно поместить невидимый текстбокс с именем TextBox1

Автор - krosav4ig
Дата добавления - 21.08.2019 в 21:25
krosav4ig Дата: Среда, 21.08.2019, 21:33 | Сообщение № 2146 | Тема: Построение квадрата Ганна 9
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Светлый, мне все треугольные числа мерещатся :) , до сих пор не отпускает


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 21.08.2019, 21:33
 
Ответить
СообщениеСветлый, мне все треугольные числа мерещатся :) , до сих пор не отпускает

Автор - krosav4ig
Дата добавления - 21.08.2019 в 21:33
krosav4ig Дата: Четверг, 22.08.2019, 15:05 | Сообщение № 2147 | Тема: Построение квадрата Ганна 9
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
еще одна вариация, в этот раз начал с диагоналей, хоть до 300 (267 без=) уложился :)
Код
=ВЫБОР(ОСТАТ(ЗНАК((ABS(СТОЛБЕЦ()-$A$1)-ABS(СТРОКА()-$A$1)))+2;2)+1;4*(СТОЛБЕЦ()-$A$1)^2+ВЫБОР((СТРОКА(B2)<=$A$1)+(СТОЛБЕЦ()<=$A$1)*2+1;2;0;-4;2)*(СТОЛБЕЦ()-$A$1)+1;ЕСЛИ(ABS(СТОЛБЕЦ()-$A$1)>ABS(СТРОКА()-$A$1);ЕСЛИ(СТОЛБЕЦ()<$A$1;B1;B3)-1;ЕСЛИ(СТРОКА(B2)<$A$1;A2;C2)+1))


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениееще одна вариация, в этот раз начал с диагоналей, хоть до 300 (267 без=) уложился :)
Код
=ВЫБОР(ОСТАТ(ЗНАК((ABS(СТОЛБЕЦ()-$A$1)-ABS(СТРОКА()-$A$1)))+2;2)+1;4*(СТОЛБЕЦ()-$A$1)^2+ВЫБОР((СТРОКА(B2)<=$A$1)+(СТОЛБЕЦ()<=$A$1)*2+1;2;0;-4;2)*(СТОЛБЕЦ()-$A$1)+1;ЕСЛИ(ABS(СТОЛБЕЦ()-$A$1)>ABS(СТРОКА()-$A$1);ЕСЛИ(СТОЛБЕЦ()<$A$1;B1;B3)-1;ЕСЛИ(СТРОКА(B2)<$A$1;A2;C2)+1))

Автор - krosav4ig
Дата добавления - 22.08.2019 в 15:05
krosav4ig Дата: Четверг, 22.08.2019, 17:46 | Сообщение № 2148 | Тема: Вставить формат Лиры в ячейку
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуте
как-то так
[vba]
Код
Selection.NumberFormat = "[$" &chrw(8356) & "-410]#,##0.00_ ;[Red]-[$" &chrw(8356) & "-410]#,##0.00"
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуте
как-то так
[vba]
Код
Selection.NumberFormat = "[$" &chrw(8356) & "-410]#,##0.00_ ;[Red]-[$" &chrw(8356) & "-410]#,##0.00"
[/vba]

Автор - krosav4ig
Дата добавления - 22.08.2019 в 17:46
krosav4ig Дата: Пятница, 23.08.2019, 22:22 | Сообщение № 2149 | Тема: Выборка значений из списка по признаку
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
UDF [vba]
Код
Function Похожие$()
    Dim r As Range, r1 As Range, s$
    Set r = Application.Caller
    Select Case True
        Case IsEmpty(r(1, 0)) And Not IsEmpty(r(2, 0))
            Set r1 = r.Parent.Range(r(1, -1), IIf(IsEmpty(r(3, 0)), r(2, 0), r(2, 0).End(xlDown)(1, 0)))
            Похожие = Join(Filter(Application.Transpose(r1), r(1, -1), 0), ";")
        Case Not IsEmpty(r(1, 0))
            s = IIf(IsEmpty(r(2, 0)), ";", "")
            Похожие = r(0, -1) & ";" & Replace(r(0, 1) & s, s & r(1, -1) & ";", "")
    End Select
End Function
[/vba]
К сообщению приложен файл: 6040571.xlsm (17.6 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
UDF [vba]
Код
Function Похожие$()
    Dim r As Range, r1 As Range, s$
    Set r = Application.Caller
    Select Case True
        Case IsEmpty(r(1, 0)) And Not IsEmpty(r(2, 0))
            Set r1 = r.Parent.Range(r(1, -1), IIf(IsEmpty(r(3, 0)), r(2, 0), r(2, 0).End(xlDown)(1, 0)))
            Похожие = Join(Filter(Application.Transpose(r1), r(1, -1), 0), ";")
        Case Not IsEmpty(r(1, 0))
            s = IIf(IsEmpty(r(2, 0)), ";", "")
            Похожие = r(0, -1) & ";" & Replace(r(0, 1) & s, s & r(1, -1) & ";", "")
    End Select
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 23.08.2019 в 22:22
krosav4ig Дата: Суббота, 24.08.2019, 03:08 | Сообщение № 2150 | Тема: Расчет суммы часов по отпуску
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
Код
=СУММПРОИЗВ((C5:AF5="от")*(ДЕНЬНЕД(C$3:AF$3;2)<6)*8)
К сообщению приложен файл: 0977430.xlsx (30.4 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
Код
=СУММПРОИЗВ((C5:AF5="от")*(ДЕНЬНЕД(C$3:AF$3;2)<6)*8)

Автор - krosav4ig
Дата добавления - 24.08.2019 в 03:08
krosav4ig Дата: Понедельник, 26.08.2019, 13:35 | Сообщение № 2151 | Тема: Формулы Excel логические и поиск (расчет премии, цен, товар)
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДобрый день.
ГПР()
ВПР()
ПРОСМОТР()

Автор - krosav4ig
Дата добавления - 26.08.2019 в 13:35
krosav4ig Дата: Вторник, 27.08.2019, 17:21 | Сообщение № 2152 | Тема: Прописать условия переноса значения для группы таблиц (см.оп
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Добрый день
Код
=ПРОСМОТР(;-1/ПОИСК("Карта № ";$A$1:A9);$A$1:$A$2)
К сообщению приложен файл: 5839563.xlsx (18.4 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДобрый день
Код
=ПРОСМОТР(;-1/ПОИСК("Карта № ";$A$1:A9);$A$1:$A$2)

Автор - krosav4ig
Дата добавления - 27.08.2019 в 17:21
krosav4ig Дата: Вторник, 27.08.2019, 17:31 | Сообщение № 2153 | Тема: Поставить пробелы между символами
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Добрый день
UDF [vba]
Код
Function AddSpaces(s$, i%)
    AddSpaces = Join(Split(StrConv(s, 64), Chr(0)), Space(i))
End Function
[/vba]
К сообщению приложен файл: 7595564-1.xls (69.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДобрый день
UDF [vba]
Код
Function AddSpaces(s$, i%)
    AddSpaces = Join(Split(StrConv(s, 64), Chr(0)), Space(i))
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 27.08.2019 в 17:31
krosav4ig Дата: Среда, 28.08.2019, 15:03 | Сообщение № 2154 | Тема: Привести разнообразные данные к единому стилю
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениекросс

Автор - krosav4ig
Дата добавления - 28.08.2019 в 15:03
krosav4ig Дата: Пятница, 30.08.2019, 13:57 | Сообщение № 2155 | Тема: Выделение шести цифр
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
можно как-то так
Код
=ЕСЛИОШИБКА(ПРОСМОТР("яяя";ТЕКСТ(--ПСТР(A2;ПОИСКПОЗ({3;4;5}+1;ЧАСТОТА(СТРОКА($1:$999);ЕОШ(-ПСТР(A2&-(9^6);СТРОКА($1:$999);1))*СТРОКА($1:$999));)-{3;4;5};{3;4;5});ПОВТОР(0;{3;4;5})));"")


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеможно как-то так
Код
=ЕСЛИОШИБКА(ПРОСМОТР("яяя";ТЕКСТ(--ПСТР(A2;ПОИСКПОЗ({3;4;5}+1;ЧАСТОТА(СТРОКА($1:$999);ЕОШ(-ПСТР(A2&-(9^6);СТРОКА($1:$999);1))*СТРОКА($1:$999));)-{3;4;5};{3;4;5});ПОВТОР(0;{3;4;5})));"")

Автор - krosav4ig
Дата добавления - 30.08.2019 в 13:57
krosav4ig Дата: Пятница, 30.08.2019, 21:11 | Сообщение № 2156 | Тема: Выделение шести цифр
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Код
=ЕСЛИОШИБКА(ПРОСМОТР("яяя";ТЕКСТ(--ПСТР(A2;ДЛСТР(A2)-ПОИСКПОЗ({3;4;5}+1;ЧАСТОТА(СТРОКА($1:$999);ЕОШ(-ПСТР(A2&-(9^6);ДЛСТР(A2)-СТРОКА($1:$999)+1;1))*СТРОКА($1:$999));)+2;{3;4;5});ПОВТОР(0;{3;4;5})));"")


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
Код
=ЕСЛИОШИБКА(ПРОСМОТР("яяя";ТЕКСТ(--ПСТР(A2;ДЛСТР(A2)-ПОИСКПОЗ({3;4;5}+1;ЧАСТОТА(СТРОКА($1:$999);ЕОШ(-ПСТР(A2&-(9^6);ДЛСТР(A2)-СТРОКА($1:$999)+1;1))*СТРОКА($1:$999));)+2;{3;4;5});ПОВТОР(0;{3;4;5})));"")

Автор - krosav4ig
Дата добавления - 30.08.2019 в 21:11
krosav4ig Дата: Вторник, 03.09.2019, 02:00 | Сообщение № 2157 | Тема: PQ преобразовать объединенный запрос с файла на папку файлов
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
[vba]
Код
let
    fx=(FileContents) => let
        fn =(t as table, SheetName as text, optional NeededColumns as nullable list, optional Filter as nullable text, optional ColumnsToRename as nullable list)=>let
            Sheet      = t{[Item=SheetName,Kind="Sheet"]}[Data],
            NeededCol  = if NeededColumns<>null then Table.SelectColumns(Sheet,NeededColumns) else Sheet,
            Filtered   = if Filter<>null then Table.SelectRows(NeededCol, each Expression.Evaluate(Filter,[_=_])) else NeededCol,
            Promoted   = Table.PromoteHeaders(Filtered, [PromoteAllScalars=true]),
            RenameCol  = if ColumnsToRename<>null then Table.RenameColumns(Promoted,ColumnsToRename) else 1,
            FullName   = NeededCol{[Column3="ФИО работника:"]}[Column4],
            AddName    = Table.AddColumn(RenameCol, "ФИО", each FullName)
        in Table.ReorderColumns(AddName,{"ФИО"}&Table.ColumnNames(RenameCol)),
        Мониторинг_КП_ежекв = fn(
            FileContents,
            "Мониторинг КП_ежекв",
            {"Column2", "Column3", "Column4", "Column5", "Column6"},
            "([Column2] <> null) and ([Column4] <> null) and ([Column3] <> ""-"")",
            {{"№#(lf)п.п.", "№ п.п."}}
        ),
        Оценка_проектов_по_году = fn(
            FileContents,
            "Оценка проектов (по году)",
            {"Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column11", "Column12", "Column18"},
            "([Column3] <> null) and ([Column3] <> ""-"") and ([Column5] <> null) and ([Column3] <> 2)",
            {{"Column5", "Качество балл (факт)"}, {"Column7", "График балл (факт)"}}
        ),
        Columns = {"ФИО", "№ п.п.", "Наименование проекта"},
        Join = Table.NestedJoin(Оценка_проектов_по_году,Columns,Мониторинг_КП_ежекв,Columns,"GetData",JoinKind.LeftOuter)
    in Table.ExpandTableColumn(Join, "GetData", List.Difference(Table.ColumnNames(Мониторинг_КП_ежекв),Table.ColumnNames(Оценка_проектов_по_году))),
    Folder=Table.SelectRows(Folder.Files("D:\x"),each (not [Attributes][NotContentIndexed]) and ([Attributes][Kind]="Excel File"))[[#"Folder Path"],[Name],[Content]],
    Transform = Table.TransformColumns(Folder, {{"Content",each fx(Table.Buffer(Excel.Workbook(_, null, true)))}})
in
    Transform
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
[vba]
Код
let
    fx=(FileContents) => let
        fn =(t as table, SheetName as text, optional NeededColumns as nullable list, optional Filter as nullable text, optional ColumnsToRename as nullable list)=>let
            Sheet      = t{[Item=SheetName,Kind="Sheet"]}[Data],
            NeededCol  = if NeededColumns<>null then Table.SelectColumns(Sheet,NeededColumns) else Sheet,
            Filtered   = if Filter<>null then Table.SelectRows(NeededCol, each Expression.Evaluate(Filter,[_=_])) else NeededCol,
            Promoted   = Table.PromoteHeaders(Filtered, [PromoteAllScalars=true]),
            RenameCol  = if ColumnsToRename<>null then Table.RenameColumns(Promoted,ColumnsToRename) else 1,
            FullName   = NeededCol{[Column3="ФИО работника:"]}[Column4],
            AddName    = Table.AddColumn(RenameCol, "ФИО", each FullName)
        in Table.ReorderColumns(AddName,{"ФИО"}&Table.ColumnNames(RenameCol)),
        Мониторинг_КП_ежекв = fn(
            FileContents,
            "Мониторинг КП_ежекв",
            {"Column2", "Column3", "Column4", "Column5", "Column6"},
            "([Column2] <> null) and ([Column4] <> null) and ([Column3] <> ""-"")",
            {{"№#(lf)п.п.", "№ п.п."}}
        ),
        Оценка_проектов_по_году = fn(
            FileContents,
            "Оценка проектов (по году)",
            {"Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column11", "Column12", "Column18"},
            "([Column3] <> null) and ([Column3] <> ""-"") and ([Column5] <> null) and ([Column3] <> 2)",
            {{"Column5", "Качество балл (факт)"}, {"Column7", "График балл (факт)"}}
        ),
        Columns = {"ФИО", "№ п.п.", "Наименование проекта"},
        Join = Table.NestedJoin(Оценка_проектов_по_году,Columns,Мониторинг_КП_ежекв,Columns,"GetData",JoinKind.LeftOuter)
    in Table.ExpandTableColumn(Join, "GetData", List.Difference(Table.ColumnNames(Мониторинг_КП_ежекв),Table.ColumnNames(Оценка_проектов_по_году))),
    Folder=Table.SelectRows(Folder.Files("D:\x"),each (not [Attributes][NotContentIndexed]) and ([Attributes][Kind]="Excel File"))[[#"Folder Path"],[Name],[Content]],
    Transform = Table.TransformColumns(Folder, {{"Content",each fx(Table.Buffer(Excel.Workbook(_, null, true)))}})
in
    Transform
[/vba]

Автор - krosav4ig
Дата добавления - 03.09.2019 в 02:00
krosav4ig Дата: Среда, 04.09.2019, 17:21 | Сообщение № 2158 | Тема: PQ преобразовать объединенный запрос с файла на папку файлов
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
let
    fx=(FileContents) => let
        fn =(t as table, SheetName as text, optional NeededColumns as nullable list, optional Filter as nullable text, optional ColumnsToRename as nullable list)=>let
            Sheet      = t{[Item=SheetName,Kind="Sheet"]}[Data],
            NeededCol  = if NeededColumns<>null then Table.SelectColumns(Sheet,NeededColumns) else Sheet,
            Filtered   = if Filter<>null then Table.SelectRows(NeededCol, each Expression.Evaluate(Filter,[_=_])) else NeededCol,
            Promoted   = Table.PromoteHeaders(Filtered, [PromoteAllScalars=true]),
            RenameCol  = if ColumnsToRename<>null then List.Accumulate(ColumnsToRename,Promoted,(a,b)=>try Table.RenameColumns(a,b) otherwise a) else Promoted,
            FullName   = NeededCol{[Column3="ФИО работника:"]}[Column4],
            AddName    = Table.AddColumn(RenameCol, "ФИО", each FullName)
        in Table.ReorderColumns(AddName,{"ФИО"}&Table.ColumnNames(RenameCol)),
        Мониторинг_КП_ежекв = fn(
            FileContents,
            "Мониторинг КП_ежекв",
            {"Column2", "Column3", "Column4", "Column5", "Column6"},
            "([Column2] <> null) and ([Column4] <> null) and ([Column3] <> ""-"")"
        ),
        Оценка_проектов_по_году = fn(
            FileContents,
            "Оценка проектов (по году)",
            {"Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column11", "Column12", "Column18"},
            "([Column3] <> null) and ([Column3] <> ""-"") and ([Column5] <> null) and ([Column3] <> 2)",
            {{"Column5", "Качество балл (факт)"}, {"Column7", "График балл (факт)"}}
        ),
        Columns = List.Transform({Оценка_проектов_по_году,Мониторинг_КП_ежекв},each List.Range(Table.ColumnNames(_),0,3)),
        Join    = Table.NestedJoin(Оценка_проектов_по_году,Columns{0},Мониторинг_КП_ежекв,Columns{1},"GetData",JoinKind.LeftOuter)
    in Table.ExpandTableColumn(Join, "GetData", List.Difference(Table.ColumnNames(Мониторинг_КП_ежекв),Table.ColumnNames(Оценка_проектов_по_году)&List.Combine(Columns))),
    Folder    = Table.SelectRows(Folder.Files("D:\x"),each (not [Attributes][NotContentIndexed]) and ([Attributes][Kind]="Excel File"))[[#"Folder Path"],[Name],[Content]],
    Transform = Table.TransformColumns(Folder, {{"Content",each fx(Table.Buffer(Excel.Workbook(_, null, true)))}})
in
    Transform
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение[vba]
Код
let
    fx=(FileContents) => let
        fn =(t as table, SheetName as text, optional NeededColumns as nullable list, optional Filter as nullable text, optional ColumnsToRename as nullable list)=>let
            Sheet      = t{[Item=SheetName,Kind="Sheet"]}[Data],
            NeededCol  = if NeededColumns<>null then Table.SelectColumns(Sheet,NeededColumns) else Sheet,
            Filtered   = if Filter<>null then Table.SelectRows(NeededCol, each Expression.Evaluate(Filter,[_=_])) else NeededCol,
            Promoted   = Table.PromoteHeaders(Filtered, [PromoteAllScalars=true]),
            RenameCol  = if ColumnsToRename<>null then List.Accumulate(ColumnsToRename,Promoted,(a,b)=>try Table.RenameColumns(a,b) otherwise a) else Promoted,
            FullName   = NeededCol{[Column3="ФИО работника:"]}[Column4],
            AddName    = Table.AddColumn(RenameCol, "ФИО", each FullName)
        in Table.ReorderColumns(AddName,{"ФИО"}&Table.ColumnNames(RenameCol)),
        Мониторинг_КП_ежекв = fn(
            FileContents,
            "Мониторинг КП_ежекв",
            {"Column2", "Column3", "Column4", "Column5", "Column6"},
            "([Column2] <> null) and ([Column4] <> null) and ([Column3] <> ""-"")"
        ),
        Оценка_проектов_по_году = fn(
            FileContents,
            "Оценка проектов (по году)",
            {"Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column11", "Column12", "Column18"},
            "([Column3] <> null) and ([Column3] <> ""-"") and ([Column5] <> null) and ([Column3] <> 2)",
            {{"Column5", "Качество балл (факт)"}, {"Column7", "График балл (факт)"}}
        ),
        Columns = List.Transform({Оценка_проектов_по_году,Мониторинг_КП_ежекв},each List.Range(Table.ColumnNames(_),0,3)),
        Join    = Table.NestedJoin(Оценка_проектов_по_году,Columns{0},Мониторинг_КП_ежекв,Columns{1},"GetData",JoinKind.LeftOuter)
    in Table.ExpandTableColumn(Join, "GetData", List.Difference(Table.ColumnNames(Мониторинг_КП_ежекв),Table.ColumnNames(Оценка_проектов_по_году)&List.Combine(Columns))),
    Folder    = Table.SelectRows(Folder.Files("D:\x"),each (not [Attributes][NotContentIndexed]) and ([Attributes][Kind]="Excel File"))[[#"Folder Path"],[Name],[Content]],
    Transform = Table.TransformColumns(Folder, {{"Content",each fx(Table.Buffer(Excel.Workbook(_, null, true)))}})
in
    Transform
[/vba]

Автор - krosav4ig
Дата добавления - 04.09.2019 в 17:21
krosav4ig Дата: Воскресенье, 08.09.2019, 05:32 | Сообщение № 2159 | Тема: Сортировка на основании маркировки наименования
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
вариант [vba]
Код
Option Explicit

Sub Sorting()
    Dim arr() As Variant, s, maxLevel%, i, j, v, s0$, dic As Object, arr1 As Variant
    Set dic = CreateObject("scripting.dictionary")
    With ActiveSheet.UsedRange.Columns(1)
        ReDim arr(.Rows.Count - 1)
        For Each s In .Value
            j = 0: s0 = "'"
            
            For Each v In Split(Split(s, "_")(0), ".")
                s0 = s0 & Application.Dec2Hex(Val(v), 4)
                j = j + 1
            Next
            
            If j > maxLevel Then
                maxLevel = j
            Else
                ShiftLeft s0, maxLevel - j
            End If
            
            If Not IsArray(dic(maxLevel)) Then
                dic(maxLevel) = Array(i)
            Else
                arr1 = dic(maxLevel)
                ReDim Preserve arr1(UBound(arr1) + 1)
                arr1(UBound(arr1)) = i
                dic(maxLevel) = arr1
            End If
            
            arr(i) = Array(s0, s)
            i = i + 1
        Next
        
        For j = maxLevel - 1 To 1 Step -1
            If IsArray(dic(j)) Then
                For Each i In dic(j)
                    ShiftLeft arr(i)(0), maxLevel - j
                Next
            End If
        Next
        Quicksort arr, 0, UBound(arr)

        .Value = Application.Index(arr, 0, 2)
    End With
End Sub
Private Sub ShiftLeft(ByRef s, n)
    s = s & Application.Rept("0000", n)
End Sub

Private Sub Quicksort(vArray As Variant, arrLbound As Long, arrUbound As Long)
    'Sorts a one-dimensional VBA array from smallest to largest
    'using a very fast quicksort algorithm variant.
    Dim pivotVal As Variant
    Dim vSwap    As Variant
    Dim tmpLow   As Long
    Dim tmpHi    As Long

    tmpLow = arrLbound
    tmpHi = arrUbound
    pivotVal = vArray((arrLbound + arrUbound) \ 2)(0)

    While (tmpLow <= tmpHi) 'divide
        While (vArray(tmpLow)(0) < pivotVal And tmpLow < arrUbound)
            tmpLow = tmpLow + 1
        Wend
  
        While (pivotVal < vArray(tmpHi)(0) And tmpHi > arrLbound)
            tmpHi = tmpHi - 1
        Wend

        If (tmpLow <= tmpHi) Then
            vSwap = vArray(tmpLow)
            vArray(tmpLow) = vArray(tmpHi)
            vArray(tmpHi) = vSwap
            tmpLow = tmpLow + 1
            tmpHi = tmpHi - 1
        End If
    Wend

    If (arrLbound < tmpHi) Then Quicksort vArray, arrLbound, tmpHi 'conquer
    If (tmpLow < arrUbound) Then Quicksort vArray, tmpLow, arrUbound 'conquer
End Sub
[/vba]
К сообщению приложен файл: 2917515.xlsm (18.3 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениевариант [vba]
Код
Option Explicit

Sub Sorting()
    Dim arr() As Variant, s, maxLevel%, i, j, v, s0$, dic As Object, arr1 As Variant
    Set dic = CreateObject("scripting.dictionary")
    With ActiveSheet.UsedRange.Columns(1)
        ReDim arr(.Rows.Count - 1)
        For Each s In .Value
            j = 0: s0 = "'"
            
            For Each v In Split(Split(s, "_")(0), ".")
                s0 = s0 & Application.Dec2Hex(Val(v), 4)
                j = j + 1
            Next
            
            If j > maxLevel Then
                maxLevel = j
            Else
                ShiftLeft s0, maxLevel - j
            End If
            
            If Not IsArray(dic(maxLevel)) Then
                dic(maxLevel) = Array(i)
            Else
                arr1 = dic(maxLevel)
                ReDim Preserve arr1(UBound(arr1) + 1)
                arr1(UBound(arr1)) = i
                dic(maxLevel) = arr1
            End If
            
            arr(i) = Array(s0, s)
            i = i + 1
        Next
        
        For j = maxLevel - 1 To 1 Step -1
            If IsArray(dic(j)) Then
                For Each i In dic(j)
                    ShiftLeft arr(i)(0), maxLevel - j
                Next
            End If
        Next
        Quicksort arr, 0, UBound(arr)

        .Value = Application.Index(arr, 0, 2)
    End With
End Sub
Private Sub ShiftLeft(ByRef s, n)
    s = s & Application.Rept("0000", n)
End Sub

Private Sub Quicksort(vArray As Variant, arrLbound As Long, arrUbound As Long)
    'Sorts a one-dimensional VBA array from smallest to largest
    'using a very fast quicksort algorithm variant.
    Dim pivotVal As Variant
    Dim vSwap    As Variant
    Dim tmpLow   As Long
    Dim tmpHi    As Long

    tmpLow = arrLbound
    tmpHi = arrUbound
    pivotVal = vArray((arrLbound + arrUbound) \ 2)(0)

    While (tmpLow <= tmpHi) 'divide
        While (vArray(tmpLow)(0) < pivotVal And tmpLow < arrUbound)
            tmpLow = tmpLow + 1
        Wend
  
        While (pivotVal < vArray(tmpHi)(0) And tmpHi > arrLbound)
            tmpHi = tmpHi - 1
        Wend

        If (tmpLow <= tmpHi) Then
            vSwap = vArray(tmpLow)
            vArray(tmpLow) = vArray(tmpHi)
            vArray(tmpHi) = vSwap
            tmpLow = tmpLow + 1
            tmpHi = tmpHi - 1
        End If
    Wend

    If (arrLbound < tmpHi) Then Quicksort vArray, arrLbound, tmpHi 'conquer
    If (tmpLow < arrUbound) Then Quicksort vArray, tmpLow, arrUbound 'conquer
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 08.09.2019 в 05:32
krosav4ig Дата: Четверг, 12.09.2019, 18:12 | Сообщение № 2160 | Тема: Функция подсчета суммы и количества ячеек с условием
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
t330, при нотации [vba]
Код
    For a = b To c Step d
       DoEvents
    Next
[/vba] оператор Next прибавляет приращение d (по умолчанию 1) к итератору a независимо от значения последнего (за исключением случая
Код
(c > b) Imp (d < 0)
)
к примеру, выполните в Immediate [vba]
Код
For i=0 To 0:?i:Next:?i
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеt330, при нотации [vba]
Код
    For a = b To c Step d
       DoEvents
    Next
[/vba] оператор Next прибавляет приращение d (по умолчанию 1) к итератору a независимо от значения последнего (за исключением случая
Код
(c > b) Imp (d < 0)
)
к примеру, выполните в Immediate [vba]
Код
For i=0 To 0:?i:Next:?i
[/vba]

Автор - krosav4ig
Дата добавления - 12.09.2019 в 18:12
Мир MS Excel » Записи участника » krosav4ig [2347]
Поиск:

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