let FolderPath = Excel.CurrentWorkbook(){[Name="FolderPath"]}[Content][Column1]{0}, Files = Folder.Files(FolderPath), Filter = Table.SelectRows(Files, each let A=[Attributes] in (A[Kind] = "Excel File" and not A[NotContentIndexed]))[[Name],[Content]], Workbooks = Table.TransformColumns(Filter,{{"Content",each let wb=Excel.Workbook(_) in Table.SelectRows(wb,each try _[Kind]="Sheet" otherwise true)[[Name],[Data]]}}), tab=(a as table) =>let b=a[Column1], c={"БИК","Расчётный счёт №","(",")"}, d=List.Transform(List.Transform({b{3}},Splitter.SplitTextByEachDelimiter(c)){0},Text.Trim), e=Text.Split(a[Column2]{2}," - "), f=List.Transform(List.LastN(List.Select(b,each (_<>null)),2),each Text.Trim(Text.Split(_&":"&_,":"){1})) in #table(List.Combine({{"Период с","Период по"},List.Range(c,0,2),{"Валюта","Организация","Банк","Дата формирования"}}),{List.Combine({{e{0},e{1}},List.Range(d,1,3),{b{4}},f})}), tab2=(a as table) as table =>let b = Table.SelectRows(Table.Transpose(Table.Skip(a,7)), each ([Column1] <> null) or ([Column2] <> null)), c = Table.TransformColumns(b,{{"Column2",each let c1=b[Column1] in if List.PositionOf(c1,_)>=0 then null else _}}), d = (a)=> let b = a[Column2], c = {"Column1", each let c1=Text.Replace(_,"#(lf)"," ") in c1&(if b<>null then ":"&b else "")} in Record.RemoveFields(Record.TransformFields(a,c),{"Column2"}), e = Table.TransformRows(Table.FillDown(c,{"Column1"}), each d(_)), f = Table.SelectRows(Table.Transpose(Table.FromRecords(e)), each ([Column1] <> null)) in Table.PromoteHeaders(Table.RemoveLastN(Table.SelectRows(f, each ([Column1] <> null)),2)), Sheets = Table.FromRecords(Table.TransformRows(Table.ExpandTableColumn(Workbooks, "Content", {"Name", "Data"},{"ИмяЛиста","Content"}),each [ИмяФайла=_[Name],ИмяЛиста=[ИмяЛиста],t=tab(_[Content]),Content=[Content]])), Transform = Table.SelectRows(Table.TransformColumns(Sheets,{{"Content",tab2}}), each try [Content] is table otherwise false), Result = Table.ExpandTableColumn(Table.ExpandTableColumn(Transform, "Content", Table.ColumnNames(Transform[Content]{0})),"t",Table.ColumnNames(Sheets[t]{0})), #"Измененный тип" = Table.TransformColumnTypes(Result,{{"Период по", type date}, {"Период с", type datetime}, {"Дата формирования", type datetime}, {"Дата операции", type datetime}}) in #"Измененный тип"
[/vba]
Ниче не знаю, у мну все норм грузится [vba]
Код
let FolderPath = Excel.CurrentWorkbook(){[Name="FolderPath"]}[Content][Column1]{0}, Files = Folder.Files(FolderPath), Filter = Table.SelectRows(Files, each let A=[Attributes] in (A[Kind] = "Excel File" and not A[NotContentIndexed]))[[Name],[Content]], Workbooks = Table.TransformColumns(Filter,{{"Content",each let wb=Excel.Workbook(_) in Table.SelectRows(wb,each try _[Kind]="Sheet" otherwise true)[[Name],[Data]]}}), tab=(a as table) =>let b=a[Column1], c={"БИК","Расчётный счёт №","(",")"}, d=List.Transform(List.Transform({b{3}},Splitter.SplitTextByEachDelimiter(c)){0},Text.Trim), e=Text.Split(a[Column2]{2}," - "), f=List.Transform(List.LastN(List.Select(b,each (_<>null)),2),each Text.Trim(Text.Split(_&":"&_,":"){1})) in #table(List.Combine({{"Период с","Период по"},List.Range(c,0,2),{"Валюта","Организация","Банк","Дата формирования"}}),{List.Combine({{e{0},e{1}},List.Range(d,1,3),{b{4}},f})}), tab2=(a as table) as table =>let b = Table.SelectRows(Table.Transpose(Table.Skip(a,7)), each ([Column1] <> null) or ([Column2] <> null)), c = Table.TransformColumns(b,{{"Column2",each let c1=b[Column1] in if List.PositionOf(c1,_)>=0 then null else _}}), d = (a)=> let b = a[Column2], c = {"Column1", each let c1=Text.Replace(_,"#(lf)"," ") in c1&(if b<>null then ":"&b else "")} in Record.RemoveFields(Record.TransformFields(a,c),{"Column2"}), e = Table.TransformRows(Table.FillDown(c,{"Column1"}), each d(_)), f = Table.SelectRows(Table.Transpose(Table.FromRecords(e)), each ([Column1] <> null)) in Table.PromoteHeaders(Table.RemoveLastN(Table.SelectRows(f, each ([Column1] <> null)),2)), Sheets = Table.FromRecords(Table.TransformRows(Table.ExpandTableColumn(Workbooks, "Content", {"Name", "Data"},{"ИмяЛиста","Content"}),each [ИмяФайла=_[Name],ИмяЛиста=[ИмяЛиста],t=tab(_[Content]),Content=[Content]])), Transform = Table.SelectRows(Table.TransformColumns(Sheets,{{"Content",tab2}}), each try [Content] is table otherwise false), Result = Table.ExpandTableColumn(Table.ExpandTableColumn(Transform, "Content", Table.ColumnNames(Transform[Content]{0})),"t",Table.ColumnNames(Sheets[t]{0})), #"Измененный тип" = Table.TransformColumnTypes(Result,{{"Период по", type date}, {"Период с", type datetime}, {"Дата формирования", type datetime}, {"Дата операции", type datetime}}) in #"Измененный тип"
Private Sub Worksheet_Change(ByVal Target As Range) Dim dic As Object, arr1 As Variant, i&, j&, ar As Range, ac As Range If Not Intersect(Target, [A1:R35]) Is Nothing Then With Application Set ac = .ActiveCell Set dic = CreateObject("scripting.dictionary") .ScreenUpdating = 0 .EnableEvents = 0 .Undo 'отмена изменения With Target For Each ar In .Areas With ar If .Count = 1 Then ReDim arr1(1 To 1, 1 To 1) arr1(1, 1) = .Value dic(.Address) = arr1 Else dic(.Address) = .Value End If End With Next End With .Undo 'отмена отмены изменения With Target For Each ar In .Areas For i = 1 To ar.Rows.Count For j = 1 To ar.Columns.Count If dic(ar.Address)(i, j) <> ar.Cells(i, j) Then ar.Cells(i, j).Offset(, 19) = 1 End If Next j, i, ar End With ac.Activate .ScreenUpdating = 1 .EnableEvents = 1 End With Set dic = Nothing End If End Sub
[/vba]
Здравствуйте [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim dic As Object, arr1 As Variant, i&, j&, ar As Range, ac As Range If Not Intersect(Target, [A1:R35]) Is Nothing Then With Application Set ac = .ActiveCell Set dic = CreateObject("scripting.dictionary") .ScreenUpdating = 0 .EnableEvents = 0 .Undo 'отмена изменения With Target For Each ar In .Areas With ar If .Count = 1 Then ReDim arr1(1 To 1, 1 To 1) arr1(1, 1) = .Value dic(.Address) = arr1 Else dic(.Address) = .Value End If End With Next End With .Undo 'отмена отмены изменения With Target For Each ar In .Areas For i = 1 To ar.Rows.Count For j = 1 To ar.Columns.Count If dic(ar.Address)(i, j) <> ar.Cells(i, j) Then ar.Cells(i, j).Offset(, 19) = 1 End If Next j, i, ar End With ac.Activate .ScreenUpdating = 1 .EnableEvents = 1 End With Set dic = Nothing End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Dim dic As Object, arr1 As Variant, i&, j&, ar As Range, ac As Range If Not Intersect(Target, [A1:R35]) Is Nothing Then With Application Set ac = .ActiveCell Set dic = CreateObject("scripting.dictionary") .ScreenUpdating = 0 .EnableEvents = 0 .Undo 'отмена изменения With Target For Each ar In .Areas i = i + 1 With ar If .Count = 1 Then ReDim arr1(1 To 1, 1 To 1) arr1(1, 1) = .Value dic(.Address) = arr1 Else dic(.Address) = .Value End If End With Next End With .Undo 'отмена отмены изменения With Target For Each ar In .Areas For i = 1 To ar.Rows.Count For j = 1 To ar.Columns.Count If dic(ar.Address)(i, j) <> ar.Cells(i, j) Then With ar.Cells(i, j).Offset(, 19) .Value = IIf(IsNumeric(.Value), .Value, 0) + 1 End With End If Next j, i, ar End With ac.Activate .ScreenUpdating = 1 .EnableEvents = 1 End With Set dic = Nothing End If End Sub
[/vba]
Так надо что ли? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim dic As Object, arr1 As Variant, i&, j&, ar As Range, ac As Range If Not Intersect(Target, [A1:R35]) Is Nothing Then With Application Set ac = .ActiveCell Set dic = CreateObject("scripting.dictionary") .ScreenUpdating = 0 .EnableEvents = 0 .Undo 'отмена изменения With Target For Each ar In .Areas i = i + 1 With ar If .Count = 1 Then ReDim arr1(1 To 1, 1 To 1) arr1(1, 1) = .Value dic(.Address) = arr1 Else dic(.Address) = .Value End If End With Next End With .Undo 'отмена отмены изменения With Target For Each ar In .Areas For i = 1 To ar.Rows.Count For j = 1 To ar.Columns.Count If dic(ar.Address)(i, j) <> ar.Cells(i, j) Then With ar.Cells(i, j).Offset(, 19) .Value = IIf(IsNumeric(.Value), .Value, 0) + 1 End With End If Next j, i, ar End With ac.Activate .ScreenUpdating = 1 .EnableEvents = 1 End With Set dic = Nothing End If End Sub
Дратути. Как вариант, пользовать ЗадатьЛокПеременную меняем Sub на Function и В макросах (Создание>Макрос) для запуска vba кода (тоже должна быть функция) есть ЗапускПрограммы
Дратути. Как вариант, пользовать ЗадатьЛокПеременную меняем Sub на Function и В макросах (Создание>Макрос) для запуска vba кода (тоже должна быть функция) есть ЗапускПрограммыkrosav4ig
_Boroda_, а у мну нет ( ну я-то знаю как починить - две скобочки добавить, ужо Сергею написал на sergeyizotov@excelworld.ru , но видимо он еще не прочитал
_Boroda_, а у мну нет ( ну я-то знаю как починить - две скобочки добавить, ужо Сергею написал на sergeyizotov@excelworld.ru , но видимо он еще не прочиталkrosav4ig
гы. если в браузере нету tampermonkey или подобных, то тот файл - просто текстовый файл. если есть - кастомный клиентский js скрипт, при желании его можно внедрить шаблон общего вида страниц форума
странно, что где-то сейчас работает, хотя, если только jquery 1.7.2 подгружается из локального кэша браузера или кэша прокси, например сейчас в файле не сайте 1.12.4 (как он туда попал - вот в чем вопрос), скрипт тегов формул перестал работать из-за функции isarraylike, введенной, если я не ошибаюсь с версии 1.9.1 и входящей в метод jQuery.map в скрипте, который отвечает за работу тегов формул аргументом в этот метод передается строковая переменная и jquery в функции isarraylike пытается получить свойство length - а нет там его, вот и не работает Пока писал, заметил что в настройках сайта ужо поменян JQ 1.7.2 на 1.12.4 (в head подсмотрел), осталось тока скобочки добавить
гы. если в браузере нету tampermonkey или подобных, то тот файл - просто текстовый файл. если есть - кастомный клиентский js скрипт, при желании его можно внедрить шаблон общего вида страниц форума
странно, что где-то сейчас работает, хотя, если только jquery 1.7.2 подгружается из локального кэша браузера или кэша прокси, например сейчас в файле не сайте 1.12.4 (как он туда попал - вот в чем вопрос), скрипт тегов формул перестал работать из-за функции isarraylike, введенной, если я не ошибаюсь с версии 1.9.1 и входящей в метод jQuery.map в скрипте, который отвечает за работу тегов формул аргументом в этот метод передается строковая переменная и jquery в функции isarraylike пытается получить свойство length - а нет там его, вот и не работает Пока писал, заметил что в настройках сайта ужо поменян JQ 1.7.2 на 1.12.4 (в head подсмотрел), осталось тока скобочки добавить
Function fx$(expr$, arg As Variant) With CreateObject("scriptcontrol") expr = Replace(Replace(Replace(expr, ChrW(923), "&&"), "V", "||"), "¬", "!") .Language = "JScript": fx = .Eval(Join(arg, ",") & "," & expr & "?1:0") End With End Function
Function fx$(expr$, arg As Variant) With CreateObject("scriptcontrol") expr = Replace(Replace(Replace(expr, ChrW(923), "&&"), "V", "||"), "¬", "!") .Language = "JScript": fx = .Eval(Join(arg, ",") & "," & expr & "?1:0") End With End Function
в пустую ячейку вписать 1, скопировать эту ячейку, выделить диапазон, в котором числовые данные (числа, дата, время) записаны как текст, специальной вставкой (Ctrl+Alt+V) вставить как значения со включенной опцией умножить или разделить
в пустую ячейку вписать 1, скопировать эту ячейку, выделить диапазон, в котором числовые данные (числа, дата, время) записаны как текст, специальной вставкой (Ctrl+Alt+V) вставить как значения со включенной опцией умножить или разделить krosav4ig
With .CmbDD1 .List = [transpose(text(row(r1:r31),"dd"))] 'Заполнение данными дата CmbDD1 .ListIndex = Day(Date) - 1 'Вывод текущей даты в поле просмотра .additem"",0 End With
[/vba]
Здравствуйте.[vba]
Код
With .CmbDD1 .List = [transpose(text(row(r1:r31),"dd"))] 'Заполнение данными дата CmbDD1 .ListIndex = Day(Date) - 1 'Вывод текущей даты в поле просмотра .additem"",0 End With