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

Вход

Регистрация

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

 

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

Результаты поиска
krosav4ig Дата: Среда, 30.11.2016, 14:28 | Сообщение № 1321 | Тема: Как получить переменную из временной формы?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
из пушки по воробьям
Ну дык поэтому и
не совсем адекватная мысля

:)


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

Сообщение отредактировал krosav4ig - Среда, 30.11.2016, 17:00
 
Ответить
Сообщение
из пушки по воробьям
Ну дык поэтому и
не совсем адекватная мысля

:)

Автор - krosav4ig
Дата добавления - 30.11.2016 в 14:28
krosav4ig Дата: Среда, 30.11.2016, 17:04 | Сообщение № 1322 | Тема: Работа с переменными окружения Windows.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
как удалять
еси мне память не изменяет, то [vba]
Код
SetEnvironmentVariable "test", Empty 'удаление переменной
[/vba]по крайней мере в Басике было так [vba]
Код
Success := SetEnvironmentVariable(PChar(VarName), nil)
[/vba]
а быстрее, имхо, потому, что создаются переменные процесса, а не системные, как было с WScript.Shell


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

Сообщение отредактировал krosav4ig - Среда, 30.11.2016, 17:09
 
Ответить
Сообщение
как удалять
еси мне память не изменяет, то [vba]
Код
SetEnvironmentVariable "test", Empty 'удаление переменной
[/vba]по крайней мере в Басике было так [vba]
Код
Success := SetEnvironmentVariable(PChar(VarName), nil)
[/vba]
а быстрее, имхо, потому, что создаются переменные процесса, а не системные, как было с WScript.Shell

Автор - krosav4ig
Дата добавления - 30.11.2016 в 17:04
krosav4ig Дата: Среда, 30.11.2016, 17:24 | Сообщение № 1323 | Тема: PowerQuery- Частичная группировка и транспонирование таблицы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Имхо, Table.Pivot должен помочь. Позже вечером отпишусь, щас негде пощупать.
вот вариант "на коленке", может не работать
[vba]
Код
Table.Pivot(Таблица, List.Distinct([Custom.Value.results.specGroups.specGuruModelcard.name]),  "Custom.Value.results.specGroups.specGuruModelcard.name",  "Custom.Value.results.specGroups.specGuruModelcard.value",  each if List.Count(_)>1 then _ else _{0})
[/vba]
а потом разворачивать столбцы, где получился List


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеИмхо, Table.Pivot должен помочь. Позже вечером отпишусь, щас негде пощупать.
вот вариант "на коленке", может не работать
[vba]
Код
Table.Pivot(Таблица, List.Distinct([Custom.Value.results.specGroups.specGuruModelcard.name]),  "Custom.Value.results.specGroups.specGuruModelcard.name",  "Custom.Value.results.specGroups.specGuruModelcard.value",  each if List.Count(_)>1 then _ else _{0})
[/vba]
а потом разворачивать столбцы, где получился List

Автор - krosav4ig
Дата добавления - 30.11.2016 в 17:24
krosav4ig Дата: Четверг, 01.12.2016, 04:28 | Сообщение № 1324 | Тема: PowerQuery- Частичная группировка и транспонирование таблицы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а у мну вот так получилось :) [vba]
Код

let
    ExpandAll = (TableToExpand as table, optional ColumnNumber as number) as table =>
    let
        ActualColumnNumber = if (ColumnNumber=null) then 0 else ColumnNumber,
        ColumnName = Table.ColumnNames(TableToExpand){ActualColumnNumber},
        ColumnContents = Table.Column(TableToExpand, ColumnName),
        ColumnsToExpand = List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))),
        NewColumnNames = List.Transform(ColumnsToExpand, each ColumnName & "." & _),
        CanExpandCurrentColumn = List.Count(ColumnsToExpand)>0,
        ExpandedTable = if CanExpandCurrentColumn then Table.ExpandTableColumn(TableToExpand, ColumnName, ColumnsToExpand, NewColumnNames) else TableToExpand,
        NextColumnNumber = if CanExpandCurrentColumn then ActualColumnNumber else ActualColumnNumber+1
    in if NextColumnNumber>(Table.ColumnCount(ExpandedTable)-1) then ExpandedTable else fn{0}(ExpandedTable, NextColumnNumber),
    col = [results={"id", "vendor", "shortName", "titles", "offers", "isNew", "parentId", "specGroups"},vendor={"id", "name"},specGroups="specGuruModelcard",
               name="results.specGroups.specGuruModelcard.name",value="results.specGroups.specGuruModelcard.value"],
    fn = {
        ExpandAll, //callback для рекурсии
        each {[file=[Folder Path]&[Name],results=Table.FromRecords(Json.Document([Content])[productModsSearch][search][results]),
            total=Json.Document([Content])[productModsSearch][search][total]]}{0},
        {"results",each Table.TransformColumns(Table.SelectColumns(_,col[results]),{{"vendor",each Table.FromRecords({Record.SelectFields(_,col[vendor])})},
            {"specGroups",each Table.TransformColumns(Table.SelectColumns(Table.FromRecords(_),col[specGroups]),{"specGuruModelcard",Table.FromRecords})},
            {"offers",each Table.FromRecords({_})},{"titles",each Table.FromRecords({_})}})}
    },
    step1 = ExpandAll(Table.TransformColumns(Table.FromRecords(Table.TransformRows(Folder.Files(GetValue("pathName")),fn{1})),fn{2})),
    step2 = Table.ReplaceValue(step1,"",null,Replacer.ReplaceValue,{col[value]}),
    step3 = Table.Pivot(step2, List.Distinct(Table.Column(step2,col[name])),col[name],col[value],each Text.Combine(_,"|"))
in
    step3
[/vba]


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

Сообщение отредактировал krosav4ig - Четверг, 01.12.2016, 04:31
 
Ответить
Сообщениеа у мну вот так получилось :) [vba]
Код

let
    ExpandAll = (TableToExpand as table, optional ColumnNumber as number) as table =>
    let
        ActualColumnNumber = if (ColumnNumber=null) then 0 else ColumnNumber,
        ColumnName = Table.ColumnNames(TableToExpand){ActualColumnNumber},
        ColumnContents = Table.Column(TableToExpand, ColumnName),
        ColumnsToExpand = List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))),
        NewColumnNames = List.Transform(ColumnsToExpand, each ColumnName & "." & _),
        CanExpandCurrentColumn = List.Count(ColumnsToExpand)>0,
        ExpandedTable = if CanExpandCurrentColumn then Table.ExpandTableColumn(TableToExpand, ColumnName, ColumnsToExpand, NewColumnNames) else TableToExpand,
        NextColumnNumber = if CanExpandCurrentColumn then ActualColumnNumber else ActualColumnNumber+1
    in if NextColumnNumber>(Table.ColumnCount(ExpandedTable)-1) then ExpandedTable else fn{0}(ExpandedTable, NextColumnNumber),
    col = [results={"id", "vendor", "shortName", "titles", "offers", "isNew", "parentId", "specGroups"},vendor={"id", "name"},specGroups="specGuruModelcard",
               name="results.specGroups.specGuruModelcard.name",value="results.specGroups.specGuruModelcard.value"],
    fn = {
        ExpandAll, //callback для рекурсии
        each {[file=[Folder Path]&[Name],results=Table.FromRecords(Json.Document([Content])[productModsSearch][search][results]),
            total=Json.Document([Content])[productModsSearch][search][total]]}{0},
        {"results",each Table.TransformColumns(Table.SelectColumns(_,col[results]),{{"vendor",each Table.FromRecords({Record.SelectFields(_,col[vendor])})},
            {"specGroups",each Table.TransformColumns(Table.SelectColumns(Table.FromRecords(_),col[specGroups]),{"specGuruModelcard",Table.FromRecords})},
            {"offers",each Table.FromRecords({_})},{"titles",each Table.FromRecords({_})}})}
    },
    step1 = ExpandAll(Table.TransformColumns(Table.FromRecords(Table.TransformRows(Folder.Files(GetValue("pathName")),fn{1})),fn{2})),
    step2 = Table.ReplaceValue(step1,"",null,Replacer.ReplaceValue,{col[value]}),
    step3 = Table.Pivot(step2, List.Distinct(Table.Column(step2,col[name])),col[name],col[value],each Text.Combine(_,"|"))
in
    step3
[/vba]

Автор - krosav4ig
Дата добавления - 01.12.2016 в 04:28
krosav4ig Дата: Четверг, 01.12.2016, 11:57 | Сообщение № 1325 | Тема: PowerQuery- Частичная группировка и транспонирование таблицы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
всегда пожалуйста :)
нужно было функцию создать

странно, у меня в обычном запросе нормально отрабатывает
создаю пустой запрос (Из других источников>Пустой запрос), пихаю это все в расширенный редактор и все отрабатывает без ошибок


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениевсегда пожалуйста :)
нужно было функцию создать

странно, у меня в обычном запросе нормально отрабатывает
создаю пустой запрос (Из других источников>Пустой запрос), пихаю это все в расширенный редактор и все отрабатывает без ошибок

Автор - krosav4ig
Дата добавления - 01.12.2016 в 11:57
krosav4ig Дата: Четверг, 01.12.2016, 12:48 | Сообщение № 1326 | Тема: Функция ВПР в объединенных ячейках не находит данные.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
Для A6 формула
Код
=ВПР(C6;ЕСЛИ({1;0};данные!$C$5:$C$10;данные!$A$5:$A$10);2;)
К сообщению приложен файл: 5865543-1.xlsx (13.5 Kb)


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

Сообщение отредактировал krosav4ig - Четверг, 01.12.2016, 12:49
 
Ответить
СообщениеЗдравствуйте
Для A6 формула
Код
=ВПР(C6;ЕСЛИ({1;0};данные!$C$5:$C$10;данные!$A$5:$A$10);2;)

Автор - krosav4ig
Дата добавления - 01.12.2016 в 12:48
krosav4ig Дата: Четверг, 01.12.2016, 15:13 | Сообщение № 1327 | Тема: Подсчет баллов по условию
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а я так понял (формула массива)
Код
=СУММ((Лист2!A2:A19=ЕСЛИ((ДЛСТР(Z4:DZ4)>0)*(ОСТАТ(СТОЛБЕЦ(F4:DF4);6)=0);W4:DW4))*Лист2!E2:E19)
К сообщению приложен файл: 7583720-1.xlsx (12.8 Kb)


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

Сообщение отредактировал krosav4ig - Четверг, 01.12.2016, 15:13
 
Ответить
Сообщениеа я так понял (формула массива)
Код
=СУММ((Лист2!A2:A19=ЕСЛИ((ДЛСТР(Z4:DZ4)>0)*(ОСТАТ(СТОЛБЕЦ(F4:DF4);6)=0);W4:DW4))*Лист2!E2:E19)

Автор - krosav4ig
Дата добавления - 01.12.2016 в 15:13
krosav4ig Дата: Четверг, 01.12.2016, 16:44 | Сообщение № 1328 | Тема: Функция ВПР в объединенных ячейках не находит данные.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
можно ли выложить формулу для столбца D

я же ужо прописал формулу в файле
К сообщению приложен файл: 5865543-1.xlsx(14Kb)

[vba]
Код
=ВПР(C6;данные!$C$5:$D$10;2;)
[/vba]


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

Сообщение отредактировал krosav4ig - Четверг, 01.12.2016, 16:45
 
Ответить
Сообщение
можно ли выложить формулу для столбца D

я же ужо прописал формулу в файле
К сообщению приложен файл: 5865543-1.xlsx(14Kb)

[vba]
Код
=ВПР(C6;данные!$C$5:$D$10;2;)
[/vba]

Автор - krosav4ig
Дата добавления - 01.12.2016 в 16:44
krosav4ig Дата: Четверг, 01.12.2016, 16:53 | Сообщение № 1329 | Тема: PowerQuery- Частичная группировка и транспонирование таблицы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
А у мну 2013, да еще и без DAX Studio. Видимо, тут собака зарыта


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеА у мну 2013, да еще и без DAX Studio. Видимо, тут собака зарыта

Автор - krosav4ig
Дата добавления - 01.12.2016 в 16:53
krosav4ig Дата: Пятница, 02.12.2016, 00:55 | Сообщение № 1330 | Тема: PowerQuery- Частичная группировка и транспонирование таблицы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
Table.FromRecords(Json.Document([Content])[productModsSearch][search][results])
[/vba]меняем на [vba]
Код
Table.Combine(List.Transform(Json.Document([Content])[productModsSearch][search][results],each Table.FromRecords({_})))
[/vba]
[vba]
Код
Table.SelectColumns(_,col[results])
[/vba] меняем на[vba]
Код
Table.SelectColumns(_,List.Intersect({Table.ColumnNames(_),col[results]}))
[/vba]
[vba]
Код
let
    ExpandAll = (TableToExpand as table, optional ColumnNumber as number) as table =>
    let
        ActualColumnNumber = if (ColumnNumber=null) then 0 else ColumnNumber,
        ColumnName = Table.ColumnNames(TableToExpand){ActualColumnNumber},
        ColumnContents = Table.Column(TableToExpand, ColumnName),
        ColumnsToExpand = List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))),
        NewColumnNames = List.Transform(ColumnsToExpand, each ColumnName & "." & _),
        CanExpandCurrentColumn = List.Count(ColumnsToExpand)>0,
        ExpandedTable = if CanExpandCurrentColumn then Table.ExpandTableColumn(TableToExpand, ColumnName, ColumnsToExpand, NewColumnNames) else TableToExpand,
        NextColumnNumber = if CanExpandCurrentColumn then ActualColumnNumber else ActualColumnNumber+1
    in if NextColumnNumber>(Table.ColumnCount(ExpandedTable)-1) then ExpandedTable else fn{0}(ExpandedTable, NextColumnNumber),
    col = [results={"id", "vendor", "shortName", "titles", "offers", "isNew", "parentId", "specGroups"},vendor={"id", "name"},specGroups="specGuruModelcard",
            name="results.specGroups.specGuruModelcard.name",value="results.specGroups.specGuruModelcard.value"],
    fn = {
        ExpandAll, //callback для рекурсии
        each {[file=[Folder Path]&[Name],results=Table.Combine(List.Transform(Json.Document([Content])[productModsSearch][search][results],each Table.FromRecords({_}))),
            total=Json.Document([Content])[productModsSearch][search][total]]}{0},
        {"results",each Table.TransformColumns(Table.SelectColumns(_,List.Intersect({Table.ColumnNames(_),col[results]})),{{"vendor",each Table.FromRecords(
            {Record.SelectFields(_,col[vendor])})},{"specGroups",each Table.TransformColumns(Table.SelectColumns(Table.FromRecords(_),col[specGroups]),
            {"specGuruModelcard",Table.FromRecords})},{"offers",each Table.FromRecords({_})},{"titles",each Table.FromRecords({_})}})}
    },
    step1 = ExpandAll(Table.TransformColumns(Table.FromRecords(Table.TransformRows(Folder.Files(GetValue("pathName")),fn{1})),fn{2})),
    step2 = Table.ReplaceValue(step1,"",null,Replacer.ReplaceValue,{col[value]}),
    step3 = Table.Pivot(step2, List.Distinct(Table.Column(step2,col[name])),col[name],col[value],each Text.Combine(_,"|"))
in
    step3
[/vba]


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

Сообщение отредактировал krosav4ig - Пятница, 02.12.2016, 00:56
 
Ответить
Сообщение[vba]
Код
Table.FromRecords(Json.Document([Content])[productModsSearch][search][results])
[/vba]меняем на [vba]
Код
Table.Combine(List.Transform(Json.Document([Content])[productModsSearch][search][results],each Table.FromRecords({_})))
[/vba]
[vba]
Код
Table.SelectColumns(_,col[results])
[/vba] меняем на[vba]
Код
Table.SelectColumns(_,List.Intersect({Table.ColumnNames(_),col[results]}))
[/vba]
[vba]
Код
let
    ExpandAll = (TableToExpand as table, optional ColumnNumber as number) as table =>
    let
        ActualColumnNumber = if (ColumnNumber=null) then 0 else ColumnNumber,
        ColumnName = Table.ColumnNames(TableToExpand){ActualColumnNumber},
        ColumnContents = Table.Column(TableToExpand, ColumnName),
        ColumnsToExpand = List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))),
        NewColumnNames = List.Transform(ColumnsToExpand, each ColumnName & "." & _),
        CanExpandCurrentColumn = List.Count(ColumnsToExpand)>0,
        ExpandedTable = if CanExpandCurrentColumn then Table.ExpandTableColumn(TableToExpand, ColumnName, ColumnsToExpand, NewColumnNames) else TableToExpand,
        NextColumnNumber = if CanExpandCurrentColumn then ActualColumnNumber else ActualColumnNumber+1
    in if NextColumnNumber>(Table.ColumnCount(ExpandedTable)-1) then ExpandedTable else fn{0}(ExpandedTable, NextColumnNumber),
    col = [results={"id", "vendor", "shortName", "titles", "offers", "isNew", "parentId", "specGroups"},vendor={"id", "name"},specGroups="specGuruModelcard",
            name="results.specGroups.specGuruModelcard.name",value="results.specGroups.specGuruModelcard.value"],
    fn = {
        ExpandAll, //callback для рекурсии
        each {[file=[Folder Path]&[Name],results=Table.Combine(List.Transform(Json.Document([Content])[productModsSearch][search][results],each Table.FromRecords({_}))),
            total=Json.Document([Content])[productModsSearch][search][total]]}{0},
        {"results",each Table.TransformColumns(Table.SelectColumns(_,List.Intersect({Table.ColumnNames(_),col[results]})),{{"vendor",each Table.FromRecords(
            {Record.SelectFields(_,col[vendor])})},{"specGroups",each Table.TransformColumns(Table.SelectColumns(Table.FromRecords(_),col[specGroups]),
            {"specGuruModelcard",Table.FromRecords})},{"offers",each Table.FromRecords({_})},{"titles",each Table.FromRecords({_})}})}
    },
    step1 = ExpandAll(Table.TransformColumns(Table.FromRecords(Table.TransformRows(Folder.Files(GetValue("pathName")),fn{1})),fn{2})),
    step2 = Table.ReplaceValue(step1,"",null,Replacer.ReplaceValue,{col[value]}),
    step3 = Table.Pivot(step2, List.Distinct(Table.Column(step2,col[name])),col[name],col[value],each Text.Combine(_,"|"))
in
    step3
[/vba]

Автор - krosav4ig
Дата добавления - 02.12.2016 в 00:55
krosav4ig Дата: Пятница, 02.12.2016, 15:31 | Сообщение № 1331 | Тема: Красивые числа на сайте
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
не успел :)
зато их 5
К сообщению приложен файл: 8540795.gif (21.4 Kb)


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

Сообщение отредактировал krosav4ig - Пятница, 02.12.2016, 15:34
 
Ответить
Сообщениене успел :)
зато их 5

Автор - krosav4ig
Дата добавления - 02.12.2016 в 15:31
krosav4ig Дата: Суббота, 03.12.2016, 01:27 | Сообщение № 1332 | Тема: LstBox - MsgBox со встроенным ListBox
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
слепил из того, что было
остается придумать откуда и по какому триггеру запускать AddReference
[vba]
Код
Option Explicit
Private Declare Function GetClassName& Lib "user32" Alias "GetClassNameA" (ByVal hwnd&, ByVal lpClassName$, ByVal nMaxCount&)
Private Declare Function AccessibleObjectFromWindow& Lib "oleacc" (ByVal hwnd&, ByVal dwId&, riid As GUID, xlWB As Object)
Private Declare Function GetDesktopWindow& Lib "user32" ()
Private Declare Function GetWindow& Lib "user32" (ByVal hwnd&, ByVal wCmd&)
Private Const GW_HWNDNEXT = 2
Private Const GW_CHILD = 5
Private Const OBJID_NATIVEOM = &HFFFFFFF0
Private Type GUID
    lData1 As Long
    iData2 As Integer
    iData3 As Integer
    aBData4(0 To 7) As Byte
End Type
Private IDispatch As GUID, oWnd As Window
Public Sub AddReference()
    Dim i&
    With IDispatch
        .lData1 = &H20400: .iData2 = &H0: .iData3 = &H0
        .aBData4(0) = &HC0: .aBData4(1) = &H0: .aBData4(2) = &H0
        .aBData4(3) = &H0: .aBData4(4) = &H0: .aBData4(5) = &H0
        .aBData4(6) = &H0: .aBData4(7) = &H46
    End With
    Referece2AllWorkbooks 0, "EXCEL7", 0, 0, 0, Application.UserLibraryPath & "MyFunction.xla"
    Set oWnd = Nothing
End Sub
Private Function Referece2AllWorkbooks&(hWndStart&, ClassName$, level&, lHolder&, lCnt&, sFile$)
    Dim hwnd&, sWindowTitle$, sClassName$, wb as Workbook
    If level = 0 Then
        If hWndStart = 0 Then
            hWndStart = GetDesktopWindow()
        End If
    End If
    
    'Increase recursion counter
    '--------------------------
    level = level + 1
    
    'Get first child window
    '----------------------
    hwnd = GetWindow(hWndStart, GW_CHILD)
    
    Do While hwnd > 0
        'Search children by recursion
        '----------------------------
        lHolder = Referece2AllWorkbooks(hwnd, ClassName, level, lHolder, lCnt, sFile)
        
        'get the class name
        '------------------
        sClassName = Space$(255)
        r = GetClassName(hwnd, sClassName, 255)
        sClassName = Left$(sClassName, r)
        
        If sClassName Like ClassName & "*" Or sClassName = ClassName Then
            Referece2AllWorkbooks = hwnd
            lHolder = hwnd
            AccessibleObjectFromWindow hwnd, OBJID_NATIVEOM, IDispatch, oWnd
            If Not oWnd Is Nothing Then
                If oWnd.Visible Then
                    lCnt = lCnt + 1
                    On Error Resume Next
                    For Each wb In oWnd.Application.Workbooks
                        wb.VBProject.References.AddFromFile sFile
                    Next
                End If
            End If
        End If
        
        'Get next child window
        '---------------------
        hwnd = GetWindow(hwnd, GW_HWNDNEXT)
    Loop
    Referece2AllWorkbooks = lHolder
    
End Function
[/vba]


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

Сообщение отредактировал krosav4ig - Суббота, 03.12.2016, 01:31
 
Ответить
Сообщениеслепил из того, что было
остается придумать откуда и по какому триггеру запускать AddReference
[vba]
Код
Option Explicit
Private Declare Function GetClassName& Lib "user32" Alias "GetClassNameA" (ByVal hwnd&, ByVal lpClassName$, ByVal nMaxCount&)
Private Declare Function AccessibleObjectFromWindow& Lib "oleacc" (ByVal hwnd&, ByVal dwId&, riid As GUID, xlWB As Object)
Private Declare Function GetDesktopWindow& Lib "user32" ()
Private Declare Function GetWindow& Lib "user32" (ByVal hwnd&, ByVal wCmd&)
Private Const GW_HWNDNEXT = 2
Private Const GW_CHILD = 5
Private Const OBJID_NATIVEOM = &HFFFFFFF0
Private Type GUID
    lData1 As Long
    iData2 As Integer
    iData3 As Integer
    aBData4(0 To 7) As Byte
End Type
Private IDispatch As GUID, oWnd As Window
Public Sub AddReference()
    Dim i&
    With IDispatch
        .lData1 = &H20400: .iData2 = &H0: .iData3 = &H0
        .aBData4(0) = &HC0: .aBData4(1) = &H0: .aBData4(2) = &H0
        .aBData4(3) = &H0: .aBData4(4) = &H0: .aBData4(5) = &H0
        .aBData4(6) = &H0: .aBData4(7) = &H46
    End With
    Referece2AllWorkbooks 0, "EXCEL7", 0, 0, 0, Application.UserLibraryPath & "MyFunction.xla"
    Set oWnd = Nothing
End Sub
Private Function Referece2AllWorkbooks&(hWndStart&, ClassName$, level&, lHolder&, lCnt&, sFile$)
    Dim hwnd&, sWindowTitle$, sClassName$, wb as Workbook
    If level = 0 Then
        If hWndStart = 0 Then
            hWndStart = GetDesktopWindow()
        End If
    End If
    
    'Increase recursion counter
    '--------------------------
    level = level + 1
    
    'Get first child window
    '----------------------
    hwnd = GetWindow(hWndStart, GW_CHILD)
    
    Do While hwnd > 0
        'Search children by recursion
        '----------------------------
        lHolder = Referece2AllWorkbooks(hwnd, ClassName, level, lHolder, lCnt, sFile)
        
        'get the class name
        '------------------
        sClassName = Space$(255)
        r = GetClassName(hwnd, sClassName, 255)
        sClassName = Left$(sClassName, r)
        
        If sClassName Like ClassName & "*" Or sClassName = ClassName Then
            Referece2AllWorkbooks = hwnd
            lHolder = hwnd
            AccessibleObjectFromWindow hwnd, OBJID_NATIVEOM, IDispatch, oWnd
            If Not oWnd Is Nothing Then
                If oWnd.Visible Then
                    lCnt = lCnt + 1
                    On Error Resume Next
                    For Each wb In oWnd.Application.Workbooks
                        wb.VBProject.References.AddFromFile sFile
                    Next
                End If
            End If
        End If
        
        'Get next child window
        '---------------------
        hwnd = GetWindow(hwnd, GW_HWNDNEXT)
    Loop
    Referece2AllWorkbooks = lHolder
    
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 03.12.2016 в 01:27
krosav4ig Дата: Суббота, 03.12.2016, 01:51 | Сообщение № 1333 | Тема: PowerQuery- Частичная группировка и транспонирование таблицы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
43 минуты

а если без авторазворачивания?
мне теперь аж самому интересно стало, какая именно часть запроса тормозит :D
[vba]
Код
let
    col = [results={"id", "vendor", "shortName", "titles", "offers", "isNew", "parentId", "specGroups"},vendor={"id", "name"},specGroups="specGuruModelcard",
            name="results.specGroups.specGuruModelcard.name",value="results.specGroups.specGuruModelcard.value"],
    fn = (tbl as table, column as text, columns as list) as table => Table.ExpandTableColumn(tbl, column, columns, List.Transform(columns,each column & "." & _)),
    fn1 = each {[file=[Folder Path]&[Name],results=Table.Combine(List.Transform(Json.Document([Content])[productModsSearch][search][results],each Table.FromRecords({_}))),
            total=Json.Document([Content])[productModsSearch][search][total]]}{0},
    fn2 = {"results",each Table.TransformColumns(Table.SelectColumns(_,List.Intersect({Table.ColumnNames(_),col[results]})),{{"vendor",each Table.FromRecords(
            {Record.SelectFields(_,col[vendor])})},{"specGroups",each Table.TransformColumns(Table.SelectColumns(Table.FromRecords(_),col[specGroups]),
            {"specGuruModelcard",Table.FromRecords})},{"offers",each Table.FromRecords({_})},{"titles",each Table.FromRecords({_})}})},
    step1 = (Table.TransformColumns(Table.FromRecords(Table.TransformRows(Folder.Files(GetValue("pathName")),fn1)),fn2)),
    step2  = fn(fn(fn(fn(step1, "results", col[results]),"results.vendor", col[vendor]),"results.specGroups", {"specGuruModelcard"}),"results.offers", {"count"}),
    step3 = fn(fn(step2, "results.specGroups.specGuruModelcard", {"name", "value"}),"results.titles", {"raw"}),
    step4 = Table.ReplaceValue(step3,"",null,Replacer.ReplaceValue,{col[value]}),
    step5 = Table.Pivot(step4,List.Distinct(Table.Column(step4,col[name])),col[name],col[value],each Text.Combine(_,"|"))
in
    step5
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
43 минуты

а если без авторазворачивания?
мне теперь аж самому интересно стало, какая именно часть запроса тормозит :D
[vba]
Код
let
    col = [results={"id", "vendor", "shortName", "titles", "offers", "isNew", "parentId", "specGroups"},vendor={"id", "name"},specGroups="specGuruModelcard",
            name="results.specGroups.specGuruModelcard.name",value="results.specGroups.specGuruModelcard.value"],
    fn = (tbl as table, column as text, columns as list) as table => Table.ExpandTableColumn(tbl, column, columns, List.Transform(columns,each column & "." & _)),
    fn1 = each {[file=[Folder Path]&[Name],results=Table.Combine(List.Transform(Json.Document([Content])[productModsSearch][search][results],each Table.FromRecords({_}))),
            total=Json.Document([Content])[productModsSearch][search][total]]}{0},
    fn2 = {"results",each Table.TransformColumns(Table.SelectColumns(_,List.Intersect({Table.ColumnNames(_),col[results]})),{{"vendor",each Table.FromRecords(
            {Record.SelectFields(_,col[vendor])})},{"specGroups",each Table.TransformColumns(Table.SelectColumns(Table.FromRecords(_),col[specGroups]),
            {"specGuruModelcard",Table.FromRecords})},{"offers",each Table.FromRecords({_})},{"titles",each Table.FromRecords({_})}})},
    step1 = (Table.TransformColumns(Table.FromRecords(Table.TransformRows(Folder.Files(GetValue("pathName")),fn1)),fn2)),
    step2  = fn(fn(fn(fn(step1, "results", col[results]),"results.vendor", col[vendor]),"results.specGroups", {"specGuruModelcard"}),"results.offers", {"count"}),
    step3 = fn(fn(step2, "results.specGroups.specGuruModelcard", {"name", "value"}),"results.titles", {"raw"}),
    step4 = Table.ReplaceValue(step3,"",null,Replacer.ReplaceValue,{col[value]}),
    step5 = Table.Pivot(step4,List.Distinct(Table.Column(step4,col[name])),col[name],col[value],each Text.Combine(_,"|"))
in
    step5
[/vba]

Автор - krosav4ig
Дата добавления - 03.12.2016 в 01:51
krosav4ig Дата: Суббота, 03.12.2016, 17:13 | Сообщение № 1334 | Тема: LstBox - MsgBox со встроенным ListBox
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а если запущено несколько экземпляров Excel, имхо, все же придется юзать winapi


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеа если запущено несколько экземпляров Excel, имхо, все же придется юзать winapi

Автор - krosav4ig
Дата добавления - 03.12.2016 в 17:13
krosav4ig Дата: Суббота, 03.12.2016, 17:50 | Сообщение № 1335 | Тема: Вывод данных из столбца в др. столбец с заданной частотой
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Спер функцию RndUnicArr у Михаила (MCH)
слепил массивную формулу
Код
=ПРОСМОТР(ТРАНСП(RndUnicArr(СУММ($E:$E)))-1;МУМНОЖ((СТРОКА($E$1:$E$54)>=ТРАНСП(СТРОКА($E$1:$E$54)))*Ч(ТРАНСП($E$1:$E$54));СТРОКА($E$1:$E$54)^0);$A$2:$A$54)
К сообщению приложен файл: _Microsoft_Exce.xlsm (51.8 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеСпер функцию RndUnicArr у Михаила (MCH)
слепил массивную формулу
Код
=ПРОСМОТР(ТРАНСП(RndUnicArr(СУММ($E:$E)))-1;МУМНОЖ((СТРОКА($E$1:$E$54)>=ТРАНСП(СТРОКА($E$1:$E$54)))*Ч(ТРАНСП($E$1:$E$54));СТРОКА($E$1:$E$54)^0);$A$2:$A$54)

Автор - krosav4ig
Дата добавления - 03.12.2016 в 17:50
krosav4ig Дата: Суббота, 03.12.2016, 22:36 | Сообщение № 1336 | Тема: Найти неоплаченные накладные
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
по зеленым ячейкам
Поставка 988,33+515,54=1503,87
Оплата 1503,87
Вопрос - кто съел 10 руб.?


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениепо зеленым ячейкам
Поставка 988,33+515,54=1503,87
Оплата 1503,87
Вопрос - кто съел 10 руб.?

Автор - krosav4ig
Дата добавления - 03.12.2016 в 22:36
krosav4ig Дата: Воскресенье, 04.12.2016, 02:04 | Сообщение № 1337 | Тема: WORD ВБА как выделить часть текста в Shape.Textbox?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте.
Как-то так можно
[vba]
Код
Sub d()
    Dim start&, count&
    start = 3: count = 5
    Dim rng As Range
    With ActiveDocument.Shapes(1).TextFrame.TextRange
        Set rng = .Characters(start)
        rng.End = .Characters(start + count).End
        rng.Select
    End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте.
Как-то так можно
[vba]
Код
Sub d()
    Dim start&, count&
    start = 3: count = 5
    Dim rng As Range
    With ActiveDocument.Shapes(1).TextFrame.TextRange
        Set rng = .Characters(start)
        rng.End = .Characters(start + count).End
        rng.Select
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 04.12.2016 в 02:04
krosav4ig Дата: Воскресенье, 04.12.2016, 15:01 | Сообщение № 1338 | Тема: WORD ВБА как выделить часть текста в Shape.Textbox?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а если через Object Browser?
в VBE жмем F2, в поле поиска пишем TextRange, жмем Enter, выбираем строку из результатов поиска, соответствующую классу предка (столбец Class, в нашем случае TextFrame)

Видим внизу
Цитата
Property TextRange As Range
read-only
Member of
Word.TextFrame
=> объект TextRange это экземпляр класса Range
тыкаем внизу по зелененькому Range, выбираем справа (Members of 'Range') Characters
Видим внизу
Цитата
Property Characters As Characters
read-only
Member of
Word.Range

тыкаем внизу по зелененькому Characters, выбираем справа (Members of 'Characters') Item
Видим внизу
Цитата
Function Item(Index As Long) As Range
Default member of
Word.Characters

Обращаем внимание на
Цитата
Default
=> Characters(i) = Characters.Item(i)
и на класс возвращаемого объекта
Цитата
As Range
=> Characters(i) это экземпляр класса Range
К сообщению приложен файл: 5446907.gif (44.9 Kb)


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

Сообщение отредактировал krosav4ig - Воскресенье, 04.12.2016, 15:14
 
Ответить
Сообщениеа если через Object Browser?
в VBE жмем F2, в поле поиска пишем TextRange, жмем Enter, выбираем строку из результатов поиска, соответствующую классу предка (столбец Class, в нашем случае TextFrame)

Видим внизу
Цитата
Property TextRange As Range
read-only
Member of
Word.TextFrame
=> объект TextRange это экземпляр класса Range
тыкаем внизу по зелененькому Range, выбираем справа (Members of 'Range') Characters
Видим внизу
Цитата
Property Characters As Characters
read-only
Member of
Word.Range

тыкаем внизу по зелененькому Characters, выбираем справа (Members of 'Characters') Item
Видим внизу
Цитата
Function Item(Index As Long) As Range
Default member of
Word.Characters

Обращаем внимание на
Цитата
Default
=> Characters(i) = Characters.Item(i)
и на класс возвращаемого объекта
Цитата
As Range
=> Characters(i) это экземпляр класса Range

Автор - krosav4ig
Дата добавления - 04.12.2016 в 15:01
krosav4ig Дата: Понедельник, 05.12.2016, 01:18 | Сообщение № 1339 | Тема: Вывод данных из столбца в др. столбец с заданной частотой
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
И можно ли использовать RndUnicArr в гугле в итоге будет?

функция RndUnicArr для google scripts [vba]
Код
function RndUnicArr(cnt) {
    return Array.apply(null, Array(cnt))
        .map(Number.call, Number)
        .map(function(n){return [Math.random(),n]})
        .sort().map(function(n){return n[1]})
}
[/vba]
формула для гугл таблиц
Код
=ArrayFormula(ПРОСМОТР(RndUnicArr(СУММ($E:$E));МУМНОЖ((СТРОКА($E$1:$E$54)>=ТРАНСП(СТРОКА($E$1:$E$54)))*Ч(ТРАНСП($E$1:$E$54));СТРОКА($E$1:$E$54)^0);A2:A54))

фомула вводится в одну ячейку, остальные ячейки заполняются автоматически (протягивать не нужно)


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

Сообщение отредактировал krosav4ig - Понедельник, 05.12.2016, 01:31
 
Ответить
Сообщение
И можно ли использовать RndUnicArr в гугле в итоге будет?

функция RndUnicArr для google scripts [vba]
Код
function RndUnicArr(cnt) {
    return Array.apply(null, Array(cnt))
        .map(Number.call, Number)
        .map(function(n){return [Math.random(),n]})
        .sort().map(function(n){return n[1]})
}
[/vba]
формула для гугл таблиц
Код
=ArrayFormula(ПРОСМОТР(RndUnicArr(СУММ($E:$E));МУМНОЖ((СТРОКА($E$1:$E$54)>=ТРАНСП(СТРОКА($E$1:$E$54)))*Ч(ТРАНСП($E$1:$E$54));СТРОКА($E$1:$E$54)^0);A2:A54))

фомула вводится в одну ячейку, остальные ячейки заполняются автоматически (протягивать не нужно)

Автор - krosav4ig
Дата добавления - 05.12.2016 в 01:18
krosav4ig Дата: Понедельник, 05.12.2016, 16:47 | Сообщение № 1340 | Тема: Сравнение списков с фамилиями со звездочкой и без
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
Для С1 формула
Код
=СЧЁТЕСЛИ(A$1:A$10;B1&"*")

upd
и со звездочкой и без

Не дочитал, исправил формулу


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

Сообщение отредактировал krosav4ig - Понедельник, 05.12.2016, 16:55
 
Ответить
СообщениеЗдравствуйте
Для С1 формула
Код
=СЧЁТЕСЛИ(A$1:A$10;B1&"*")

upd
и со звездочкой и без

Не дочитал, исправил формулу

Автор - krosav4ig
Дата добавления - 05.12.2016 в 16:47
Поиск:

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