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

Вход

Регистрация

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

 

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

Результаты поиска
krosav4ig Дата: Вторник, 22.01.2019, 08:58 | Сообщение № 1761 | Тема: Вращение 3D диаграм
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
bmv98rus, там у bokr напихано 9 диаграмм, оно, конечно, не должно сильно тормозить, но все может быть


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеbmv98rus, там у bokr напихано 9 диаграмм, оно, конечно, не должно сильно тормозить, но все может быть

Автор - krosav4ig
Дата добавления - 22.01.2019 в 08:58
krosav4ig Дата: Вторник, 22.01.2019, 23:19 | Сообщение № 1762 | Тема: Определить кол-во тренингов и дату последнего обучения
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Вам следует самостоятельно найти какие функции использовать.
а я их нашел B)

Используйте на здоровье :)


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

Сообщение отредактировал krosav4ig - Вторник, 22.01.2019, 23:21
 
Ответить
Сообщение
Вам следует самостоятельно найти какие функции использовать.
а я их нашел B)

Используйте на здоровье :)

Автор - krosav4ig
Дата добавления - 22.01.2019 в 23:19
krosav4ig Дата: Вторник, 22.01.2019, 23:57 | Сообщение № 1763 | Тема: Определить кол-во тренингов и дату последнего обучения
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Не знаю, как вы будете объяснять преподавателю что это такое и почему так, но как-то так %) ...
В диспетчере имен
Код
aa    =ПОЛУЧИТЬ.ЯЧЕЙКУ(66;C2)
Код
bb    =ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(4;aa)
Код
cc    =ИНДЕКС(ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1;aa);Ч(ИНДЕКС(СТОЛБЕЦ($B$1:ИНДЕКС($1:$1;bb));)))
Код
dd    =ПОЛУЧИТЬ.ДОКУМЕНТ(9;Т(ИНДЕКС(cc;0)))
Код
ee    =ПОЛУЧИТЬ.ДОКУМЕНТ(10;Т(ИНДЕКС(cc;0)))
Код
ff    =ПОЛУЧИТЬ.ДОКУМЕНТ(11;Т(ИНДЕКС(cc;0)))
Код
gg    =ЕСЛИ({1:1:0};СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ЛЕВБ($B2;ПОИСК(" ";$B2)-1);"/";ПОВТОР(" ";99));{1:99};99)&ПРАВБ($B2;ДЛСТР($B2)+1-ПОИСК(" ";$B2)));ЕСЛИОШИБКА(Т(ПОИСК("/";$B2))&$B2;))
Код
hh    =ИНДЕКС(ОТБР((СТРОКА(C$1:ИНДЕКС(C:C;МАКС(ee-dd+1)*(bb-1)))-1)/МАКС(ee-dd+1))+1;)
Код
ii    =МИН(dd)+ОСТАТ(СТРОКА(C$1:ИНДЕКС(C:C;МАКС(ee-dd+1)*(bb-1)))-1;МАКС(ee-dd+1))
Код
Количество    =СУММ(СЧЁТЕСЛИ(ДВССЫЛ("'"&cc&"'!R"&МИН(dd)&"C"&CC&":R"&МАКС(ee)&"C"&CC;);gg))
Код
ПоследняяДата    =МАКС((Т(ДВССЫЛ("'"&ИНДЕКС(cc;Ч(hh))&"'!R"&ii&"C"&ИНДЕКС(CC;Ч(hh));))=ТРАНСП(gg))*Ч(ДВССЫЛ("'"&ИНДЕКС(cc;Ч(hh))&"'!R"&ii&"C"&ИНДЕКС(CC;Ч(hh))+1;)))

в ячейках формулы
Код
=Количество
и
Код
=ПоследняяДата
К сообщению приложен файл: -2-1-.xlsm (17.4 Kb)


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

Сообщение отредактировал krosav4ig - Среда, 23.01.2019, 00:16
 
Ответить
СообщениеНе знаю, как вы будете объяснять преподавателю что это такое и почему так, но как-то так %) ...
В диспетчере имен
Код
aa    =ПОЛУЧИТЬ.ЯЧЕЙКУ(66;C2)
Код
bb    =ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(4;aa)
Код
cc    =ИНДЕКС(ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1;aa);Ч(ИНДЕКС(СТОЛБЕЦ($B$1:ИНДЕКС($1:$1;bb));)))
Код
dd    =ПОЛУЧИТЬ.ДОКУМЕНТ(9;Т(ИНДЕКС(cc;0)))
Код
ee    =ПОЛУЧИТЬ.ДОКУМЕНТ(10;Т(ИНДЕКС(cc;0)))
Код
ff    =ПОЛУЧИТЬ.ДОКУМЕНТ(11;Т(ИНДЕКС(cc;0)))
Код
gg    =ЕСЛИ({1:1:0};СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ЛЕВБ($B2;ПОИСК(" ";$B2)-1);"/";ПОВТОР(" ";99));{1:99};99)&ПРАВБ($B2;ДЛСТР($B2)+1-ПОИСК(" ";$B2)));ЕСЛИОШИБКА(Т(ПОИСК("/";$B2))&$B2;))
Код
hh    =ИНДЕКС(ОТБР((СТРОКА(C$1:ИНДЕКС(C:C;МАКС(ee-dd+1)*(bb-1)))-1)/МАКС(ee-dd+1))+1;)
Код
ii    =МИН(dd)+ОСТАТ(СТРОКА(C$1:ИНДЕКС(C:C;МАКС(ee-dd+1)*(bb-1)))-1;МАКС(ee-dd+1))
Код
Количество    =СУММ(СЧЁТЕСЛИ(ДВССЫЛ("'"&cc&"'!R"&МИН(dd)&"C"&CC&":R"&МАКС(ee)&"C"&CC;);gg))
Код
ПоследняяДата    =МАКС((Т(ДВССЫЛ("'"&ИНДЕКС(cc;Ч(hh))&"'!R"&ii&"C"&ИНДЕКС(CC;Ч(hh));))=ТРАНСП(gg))*Ч(ДВССЫЛ("'"&ИНДЕКС(cc;Ч(hh))&"'!R"&ii&"C"&ИНДЕКС(CC;Ч(hh))+1;)))

в ячейках формулы
Код
=Количество
и
Код
=ПоследняяДата

Автор - krosav4ig
Дата добавления - 22.01.2019 в 23:57
krosav4ig Дата: Четверг, 24.01.2019, 07:08 | Сообщение № 1764 | Тема: Суммирование ячеек через N (всегда разное) строк
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(A:A;СТРОКА(A1));"")
Код
=ЕСЛИ(D2<"";СУММЕСЛИ(A:A;D2;B:B);"")
К сообщению приложен файл: _N_.xlsx (12.6 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(A:A;СТРОКА(A1));"")
Код
=ЕСЛИ(D2<"";СУММЕСЛИ(A:A;D2;B:B);"")

Автор - krosav4ig
Дата добавления - 24.01.2019 в 07:08
krosav4ig Дата: Четверг, 24.01.2019, 23:04 | Сообщение № 1765 | Тема: При объединении открыть ту папку, где лежит файл с макросом
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте.
[vba]
Код
Shell "explorer /select,""" & ThisWorkbook.Path & "\!!! Результат.xlsx""", 1
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте.
[vba]
Код
Shell "explorer /select,""" & ThisWorkbook.Path & "\!!! Результат.xlsx""", 1
[/vba]

Автор - krosav4ig
Дата добавления - 24.01.2019 в 23:04
krosav4ig Дата: Четверг, 24.01.2019, 23:15 | Сообщение № 1766 | Тема: При объединении открыть ту папку, где лежит файл с макросом
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
че-то ляпнул я не дочитав вопрос.
Написанная в моем посте строка при ее размещении в конце кода открывает папку с результатом объединения


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениече-то ляпнул я не дочитав вопрос.
Написанная в моем посте строка при ее размещении в конце кода открывает папку с результатом объединения

Автор - krosav4ig
Дата добавления - 24.01.2019 в 23:15
krosav4ig Дата: Пятница, 25.01.2019, 08:37 | Сообщение № 1767 | Тема: Выполнение макросов по списку в таблице
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте.
[vba]
Код
    Dim i&, j As Variant
    With ActiveSheet.UsedRange
        With Intersect(.Offset(5), .Cells)
            arr = .Value
            For i = LBound(arr, 1) To UBound(arr, 1)
                For Each j In Array(17, 26)
                    Macr = arr(i, j - .Column + 1)
                    If Macr <> "" Then
                        Application.Run Macr
                        Application.Wait Now + #12:00:05 AM#
                    End If
            Next j, i
        End With
    End With
[/vba]или[vba]
Код
    Dim r As Range, col As Variant
    With ActiveSheet.UsedRange
        With Intersect(.Offset(5), .Cells)
            For Each r In .Rows
                For Each col In Array("Q", "Z")
                    Macr = r.Columns(col).Value
                    If Macr <> "" Then
                        Application.Run Macr
                        Application.Wait Now + #12:00:05 AM#
                    End If
            Next col, r
        End With
    End With
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте.
[vba]
Код
    Dim i&, j As Variant
    With ActiveSheet.UsedRange
        With Intersect(.Offset(5), .Cells)
            arr = .Value
            For i = LBound(arr, 1) To UBound(arr, 1)
                For Each j In Array(17, 26)
                    Macr = arr(i, j - .Column + 1)
                    If Macr <> "" Then
                        Application.Run Macr
                        Application.Wait Now + #12:00:05 AM#
                    End If
            Next j, i
        End With
    End With
[/vba]или[vba]
Код
    Dim r As Range, col As Variant
    With ActiveSheet.UsedRange
        With Intersect(.Offset(5), .Cells)
            For Each r In .Rows
                For Each col In Array("Q", "Z")
                    Macr = r.Columns(col).Value
                    If Macr <> "" Then
                        Application.Run Macr
                        Application.Wait Now + #12:00:05 AM#
                    End If
            Next col, r
        End With
    End With
[/vba]

Автор - krosav4ig
Дата добавления - 25.01.2019 в 08:37
krosav4ig Дата: Суббота, 26.01.2019, 18:12 | Сообщение № 1768 | Тема: Приведение столбцов в таблицах к одному виду
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
это по моему примеру?
Да, по вашему.
Прочитав фразу
В каждой книге таблица с столбцами подписаными по первой строке.
я понял, что у вас несколько файлов с листами, именование столбцов на которых нужно привести к общему порядку. И написал макрос, который это делает, тока часть кода забыл выложить. Добавил в ваш файл макрос, добавил в него комментарии.
[vba]
Код
'---------------------------------------------------------------------------------------
' Модуль    : modFilenames
' Автор     : EducatedFool (Игорь)                    Дата: 13.04.2011
' Разработка макросов для Excel, Word, CorelDRAW. Быстро, профессионально, недорого.
' http://excelvba.ru/          ICQ: 5836318           Skype: ExcelVBA.ru
' Реквизиты для оплаты: http://excelvba.ru/payments
'---------------------------------------------------------------------------------------
Option Explicit
Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                             Optional ByVal SearchDeep As Long = 999) As Collection
    ' Получает в качестве параметра путь к папке FolderPath,
    ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
    ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
    ' Возвращает коллекцию, содержащую полные пути найденных файлов
    ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)
    Dim fso As Object

    Set FilenamesCollection = New Collection    ' создаём пустую коллекцию
    Set fso = CreateObject("Scripting.FileSystemObject")    ' создаём экземпляр FileSystemObject
    GetAllFileNamesUsingFSO FolderPath, Mask, fso, FilenamesCollection, SearchDeep    ' поиск
    Set fso = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
End Function

Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef fso, _
                    ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
    ' перебор папок осуществляется в том случае, если SearchDeep > 1
    ' добавляет пути найденных файлов в коллекцию FileNamesColl
    Dim curfold As Object, fil As Object, sfol As Object
    On Error Resume Next: Set curfold = fso.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ' если удалось получить доступ к папке

        ' раскомментируйте эту строку для вывода пути к просматриваемой
        ' в текущий момент папке в строку состояния Excel
        Application.StatusBar = "Поиск в папке: " & FolderPath

        For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
            If fil.Name Like "*" & Mask And Left(fil.Name, 1) <> "~" Then FileNamesColl.Add fil.Path
        Next
        SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
        If SearchDeep Then    ' если надо искать глубже
            For Each sfol In curfold.SubFolders    ' ' перебираем все подпапки в папке FolderPath
                GetAllFileNamesUsingFSO sfol.Path, Mask, fso, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
    End If
End Function
[/vba]

[vba]
Код
Option Explicit
Sub AdjustColmns()
    Dim con As Object, ColFiles As Collection, AL As Object
    Dim wb As Workbook, sh As Worksheet, r As Range
    Dim sFilePath As Variant, sColName As Variant
    Dim sFolderPath$, c$, ver$, i&, calc&, b As Boolean
    With Application
        With .FileDialog(4) 'диалоговое окно выбора папки
            .AllowMultiSelect = False 'выбрать можно только одну папку
            .InitialFileName = CreateObject("Shell.Application").Namespace(5).self.Path & "\" 'при запуске диалога отобразить папку Мои доокументы
            .Title = "Выберите папку с файлами" 'заголовок диалогового окна
sel:        If .Show = False Then 'если папка не выбрана (закрыли или нажали Отмена)
                If MsgBox("Ничего не выбрано. Повторить?", vbYesNo) = vbYes Then 'запрос на повтор выбора
                    GoTo sel 'нажали Да, открываем диалоговое окно еще раз
                Else
                    Exit Sub 'нажали Нет, останавливаем выполнение макроса
                End If
            End If
            'записываем путь к выбранной папке
            sFolderPath = .SelectedItems(1) & "\"
        End With
        
        Set AL = CreateObject("system.collections.arraylist") 'объект ArrayList, в него будем собирать заголовки столбцов
        Set con = CreateObject("adodb.Connection") 'ADODB подключение, будем его использовать для сбора заголовков столбцов
        
        'пишем в коллекцию пути всех excel книг из выбранной папки
        Set ColFiles = FilenamesCollection(sFolderPath, "*.xls*")

        'перебираем пути файлов в коллекции
        For Each sFilePath In ColFiles
            On Error Resume Next
            'если файл открыт, сохраняем его
            .Workbooks(Replace(sFilePath, sFolderPath, "")).Save
            On Error GoTo 0
            'определяем тип файла по последней букве расширения
            Select Case Right(sFilePath, 1)
                Case "s": ver = "8.0"
                Case "x": ver = "12.0 xml"
                Case "m": ver = "12.0 macro"
                Case "b": ver = "12.0"
            End Select
            'подлючаемся к файлу
            con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
                sFilePath & ";Mode=Read;Extended Properties=""excel " & ver & ";HDR=YES;IMEX=1;"";"
            'перебиреаем значения поля COLUMN_NAME из схемы adSchemaColumns
            For Each sColName In con.OpenSchema(4).getrows(, , 3)
                c = Replace(sColName, "$", "")
                'если значение еще не добавлено в AL, то добавляем
                If Not AL.contains(c) Then AL.Add c
            Next
            'закрываем подключение
            con.Close
        Next
        AL.Sort 'сортируем полученный список заголовков столбцов
        .ScreenUpdating = 0: .EnableEvents = 0: calc = .Calculation: .Calculation = xlCalculationManual
        'перебираем пути файлов в коллекции
        For Each sFilePath In ColFiles
            On Error Resume Next
            'пробуем подключиться к открытой книге
            Set wb = .Workbooks(Replace(sFilePath, sFolderPath, ""))
            On Error GoTo 0
            
            If wb Is Nothing Then 'если книга не была открыта
                'открываем ее
                Set wb = .Workbooks.Open(sFilePath)
            Else
                b = True
            End If
            With wb
                
                For Each sh In .Sheets ' перебираем листы
                    i = 1
                    For Each sColName In AL 'перебираем значения из списка заголовков
                        With sh.Rows(1) ' работаем с первой строкой листа
                            'ищем заголовок
                            Set r = .Find(sColName, , , xlWhole, , , False, , False)
                            If r Is Nothing Then ' если не найдено
                    'добавляем заголовок справа
                    .End(xlToRight).Offset(, 1) = sColName
                    Set r = .End(xlToRight)
                            End If
                            If r.Column <> i Then 'если номер столбца с искомым заголовком не равен позиции заголовка в AL
                    'перемещаем столбец в нужную позицию
                    r.EntireColumn.Cut: .Columns(i).Insert Shift:=xlToRight
                            End If
                            i = i + 1
                        End With
                Next sColName, sh
                'если книга была открыта макросом, закрываем ее с сохранением изменений
                If Not b Then .Close True
            End With
            Set wb = Nothing
        Next
        .ScreenUpdating = 1: .EnableEvents = 1: .Calculation = calc
    End With
    Set AL = Nothing: Set con = Nothing: Set r = Nothing: Set ColFiles = Nothing
End Sub
[/vba]
К сообщению приложен файл: 9497543.xlsm (31.0 Kb)


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

Сообщение отредактировал krosav4ig - Суббота, 26.01.2019, 18:14
 
Ответить
Сообщение
это по моему примеру?
Да, по вашему.
Прочитав фразу
В каждой книге таблица с столбцами подписаными по первой строке.
я понял, что у вас несколько файлов с листами, именование столбцов на которых нужно привести к общему порядку. И написал макрос, который это делает, тока часть кода забыл выложить. Добавил в ваш файл макрос, добавил в него комментарии.
[vba]
Код
'---------------------------------------------------------------------------------------
' Модуль    : modFilenames
' Автор     : EducatedFool (Игорь)                    Дата: 13.04.2011
' Разработка макросов для Excel, Word, CorelDRAW. Быстро, профессионально, недорого.
' http://excelvba.ru/          ICQ: 5836318           Skype: ExcelVBA.ru
' Реквизиты для оплаты: http://excelvba.ru/payments
'---------------------------------------------------------------------------------------
Option Explicit
Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _
                             Optional ByVal SearchDeep As Long = 999) As Collection
    ' Получает в качестве параметра путь к папке FolderPath,
    ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением)
    ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются).
    ' Возвращает коллекцию, содержащую полные пути найденных файлов
    ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO)
    Dim fso As Object

    Set FilenamesCollection = New Collection    ' создаём пустую коллекцию
    Set fso = CreateObject("Scripting.FileSystemObject")    ' создаём экземпляр FileSystemObject
    GetAllFileNamesUsingFSO FolderPath, Mask, fso, FilenamesCollection, SearchDeep    ' поиск
    Set fso = Nothing: Application.StatusBar = False    ' очистка строки состояния Excel
End Function

Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef fso, _
                    ByRef FileNamesColl As Collection, ByVal SearchDeep As Long)
    ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO
    ' перебор папок осуществляется в том случае, если SearchDeep > 1
    ' добавляет пути найденных файлов в коллекцию FileNamesColl
    Dim curfold As Object, fil As Object, sfol As Object
    On Error Resume Next: Set curfold = fso.GetFolder(FolderPath)
    If Not curfold Is Nothing Then    ' если удалось получить доступ к папке

        ' раскомментируйте эту строку для вывода пути к просматриваемой
        ' в текущий момент папке в строку состояния Excel
        Application.StatusBar = "Поиск в папке: " & FolderPath

        For Each fil In curfold.Files    ' перебираем все файлы в папке FolderPath
            If fil.Name Like "*" & Mask And Left(fil.Name, 1) <> "~" Then FileNamesColl.Add fil.Path
        Next
        SearchDeep = SearchDeep - 1    ' уменьшаем глубину поиска в подпапках
        If SearchDeep Then    ' если надо искать глубже
            For Each sfol In curfold.SubFolders    ' ' перебираем все подпапки в папке FolderPath
                GetAllFileNamesUsingFSO sfol.Path, Mask, fso, FileNamesColl, SearchDeep
            Next
        End If
        Set fil = Nothing: Set curfold = Nothing    ' очищаем переменные
    End If
End Function
[/vba]

[vba]
Код
Option Explicit
Sub AdjustColmns()
    Dim con As Object, ColFiles As Collection, AL As Object
    Dim wb As Workbook, sh As Worksheet, r As Range
    Dim sFilePath As Variant, sColName As Variant
    Dim sFolderPath$, c$, ver$, i&, calc&, b As Boolean
    With Application
        With .FileDialog(4) 'диалоговое окно выбора папки
            .AllowMultiSelect = False 'выбрать можно только одну папку
            .InitialFileName = CreateObject("Shell.Application").Namespace(5).self.Path & "\" 'при запуске диалога отобразить папку Мои доокументы
            .Title = "Выберите папку с файлами" 'заголовок диалогового окна
sel:        If .Show = False Then 'если папка не выбрана (закрыли или нажали Отмена)
                If MsgBox("Ничего не выбрано. Повторить?", vbYesNo) = vbYes Then 'запрос на повтор выбора
                    GoTo sel 'нажали Да, открываем диалоговое окно еще раз
                Else
                    Exit Sub 'нажали Нет, останавливаем выполнение макроса
                End If
            End If
            'записываем путь к выбранной папке
            sFolderPath = .SelectedItems(1) & "\"
        End With
        
        Set AL = CreateObject("system.collections.arraylist") 'объект ArrayList, в него будем собирать заголовки столбцов
        Set con = CreateObject("adodb.Connection") 'ADODB подключение, будем его использовать для сбора заголовков столбцов
        
        'пишем в коллекцию пути всех excel книг из выбранной папки
        Set ColFiles = FilenamesCollection(sFolderPath, "*.xls*")

        'перебираем пути файлов в коллекции
        For Each sFilePath In ColFiles
            On Error Resume Next
            'если файл открыт, сохраняем его
            .Workbooks(Replace(sFilePath, sFolderPath, "")).Save
            On Error GoTo 0
            'определяем тип файла по последней букве расширения
            Select Case Right(sFilePath, 1)
                Case "s": ver = "8.0"
                Case "x": ver = "12.0 xml"
                Case "m": ver = "12.0 macro"
                Case "b": ver = "12.0"
            End Select
            'подлючаемся к файлу
            con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
                sFilePath & ";Mode=Read;Extended Properties=""excel " & ver & ";HDR=YES;IMEX=1;"";"
            'перебиреаем значения поля COLUMN_NAME из схемы adSchemaColumns
            For Each sColName In con.OpenSchema(4).getrows(, , 3)
                c = Replace(sColName, "$", "")
                'если значение еще не добавлено в AL, то добавляем
                If Not AL.contains(c) Then AL.Add c
            Next
            'закрываем подключение
            con.Close
        Next
        AL.Sort 'сортируем полученный список заголовков столбцов
        .ScreenUpdating = 0: .EnableEvents = 0: calc = .Calculation: .Calculation = xlCalculationManual
        'перебираем пути файлов в коллекции
        For Each sFilePath In ColFiles
            On Error Resume Next
            'пробуем подключиться к открытой книге
            Set wb = .Workbooks(Replace(sFilePath, sFolderPath, ""))
            On Error GoTo 0
            
            If wb Is Nothing Then 'если книга не была открыта
                'открываем ее
                Set wb = .Workbooks.Open(sFilePath)
            Else
                b = True
            End If
            With wb
                
                For Each sh In .Sheets ' перебираем листы
                    i = 1
                    For Each sColName In AL 'перебираем значения из списка заголовков
                        With sh.Rows(1) ' работаем с первой строкой листа
                            'ищем заголовок
                            Set r = .Find(sColName, , , xlWhole, , , False, , False)
                            If r Is Nothing Then ' если не найдено
                    'добавляем заголовок справа
                    .End(xlToRight).Offset(, 1) = sColName
                    Set r = .End(xlToRight)
                            End If
                            If r.Column <> i Then 'если номер столбца с искомым заголовком не равен позиции заголовка в AL
                    'перемещаем столбец в нужную позицию
                    r.EntireColumn.Cut: .Columns(i).Insert Shift:=xlToRight
                            End If
                            i = i + 1
                        End With
                Next sColName, sh
                'если книга была открыта макросом, закрываем ее с сохранением изменений
                If Not b Then .Close True
            End With
            Set wb = Nothing
        Next
        .ScreenUpdating = 1: .EnableEvents = 1: .Calculation = calc
    End With
    Set AL = Nothing: Set con = Nothing: Set r = Nothing: Set ColFiles = Nothing
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 26.01.2019 в 18:12
krosav4ig Дата: Суббота, 26.01.2019, 18:58 | Сообщение № 1769 | Тема: формула для выборки данных из сводной таблицы
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
так нужно?
К сообщению приложен файл: 0209103.xlsx (62.6 Kb)


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

Автор - krosav4ig
Дата добавления - 26.01.2019 в 18:58
krosav4ig Дата: Суббота, 26.01.2019, 19:57 | Сообщение № 1770 | Тема: Поиск значений в зависимости заданных условий
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте.
Многабукафф, лень читать.
Цитата АлександрРВТ, 26.01.2019 в 15:07, в сообщении № 1 ()
20 меньше 44 и больше 28
:o
Состряпал на скорую руку, проверяйте
Код
=МАКС(('исходные данные'!$B$2:$B$141=$C2)*(МИН(ЕСЛИ(('исходные данные'!$B$2:$B$141=$C2)*(ЕСЛИ($D2<"";'исходные данные'!$E$2:$E$141;'исходные данные'!$F$2:$F$141)>=МАКС($D2:$E2))*('исходные данные'!$C$2:$C$141=F$1);ЕСЛИ($D2<"";'исходные данные'!$E$2:$E$141;'исходные данные'!$F$2:$F$141)))=ЕСЛИ($D2<"";'исходные данные'!$E$2:$E$141;'исходные данные'!$F$2:$F$141))*('исходные данные'!$C$2:$C$141=F$1)*(0&'исходные данные'!$D$2:$D$141))
К сообщению приложен файл: 5926047.xlsx (21.0 Kb)


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

Сообщение отредактировал krosav4ig - Суббота, 26.01.2019, 22:18
 
Ответить
СообщениеЗдравствуйте.
Многабукафф, лень читать.
Цитата АлександрРВТ, 26.01.2019 в 15:07, в сообщении № 1 ()
20 меньше 44 и больше 28
:o
Состряпал на скорую руку, проверяйте
Код
=МАКС(('исходные данные'!$B$2:$B$141=$C2)*(МИН(ЕСЛИ(('исходные данные'!$B$2:$B$141=$C2)*(ЕСЛИ($D2<"";'исходные данные'!$E$2:$E$141;'исходные данные'!$F$2:$F$141)>=МАКС($D2:$E2))*('исходные данные'!$C$2:$C$141=F$1);ЕСЛИ($D2<"";'исходные данные'!$E$2:$E$141;'исходные данные'!$F$2:$F$141)))=ЕСЛИ($D2<"";'исходные данные'!$E$2:$E$141;'исходные данные'!$F$2:$F$141))*('исходные данные'!$C$2:$C$141=F$1)*(0&'исходные данные'!$D$2:$D$141))

Автор - krosav4ig
Дата добавления - 26.01.2019 в 19:57
krosav4ig Дата: Суббота, 26.01.2019, 22:19 | Сообщение № 1771 | Тема: Поиск значений в зависимости заданных условий
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Цитата АлександрРВТ, 26.01.2019 в 20:27, в сообщении № 3 ()
не совсем правильно работает при задании "параметров 1".

Забыл один диапазон пригвоздить, исправил в своем посте


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
Цитата АлександрРВТ, 26.01.2019 в 20:27, в сообщении № 3 ()
не совсем правильно работает при задании "параметров 1".

Забыл один диапазон пригвоздить, исправил в своем посте

Автор - krosav4ig
Дата добавления - 26.01.2019 в 22:19
krosav4ig Дата: Воскресенье, 27.01.2019, 00:29 | Сообщение № 1772 | Тема: Приведение столбцов в таблицах к одному виду
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Файл один.

тогда так [vba]
Код
Option Explicit
Sub AdjustColmns()
    Dim AL As Object, oWsh As Worksheet, r As Range, sColName As Variant, i&, calc&
    Set AL = CreateObject("system.collections.arraylist") 'объект ArrayList, в него будем собирать заголовки столбцов
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0: calc = .Calculation: .Calculation = xlCalculationManual
            With ThisWorkbook 'книга, из которой запущен макрос
                For Each oWsh In .Sheets ' перебираем листы книги
                    'перебираем области диапазона непустых ячеек из первой строки листа
                    For Each r In oWsh.UsedRange.Rows(1).SpecialCells(2, 23).Areas
                        For Each sColName In r.Value 'перебираем значения из ячеек из области
                            'если значение еще не добавлено в AL, то добавляем
                            If Not AL.contains(sColName) Then AL.Add sColName
                Next sColName, r, oWsh
                AL.Sort 'сортируем полученный список заголовков столбцов
                For Each oWsh In .Sheets ' перебираем листы
                    i = 1
                    For Each sColName In AL 'перебираем значения из списка заголовков
                        With oWsh.Rows(1) ' работаем с первой строкой листа
                            'ищем заголовок
                            Set r = .Find(sColName, , , xlWhole, , , False, , False)
                            If r Is Nothing Then ' если не найдено
                    'добавляем заголовок справа
                    .End(xlToRight).Offset(, 1) = sColName
                    Set r = .End(xlToRight)
                            End If
                            If r.Column <> i Then 'если номер столбца с искомым заголовком не равен позиции заголовка в AL
                    'перемещаем столбец в нужную позицию
                    r.EntireColumn.Cut: .Columns(i).Insert Shift:=xlToRight
                            End If
                            i = i + 1
                        End With
                Next sColName, oWsh
            End With
        .ScreenUpdating = 1: .EnableEvents = 1: .Calculation = calc
    End With
    Set AL = Nothing: Set r = Nothing
End Sub
[/vba]
К сообщению приложен файл: 7535897.xlsm (23.8 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
Файл один.

тогда так [vba]
Код
Option Explicit
Sub AdjustColmns()
    Dim AL As Object, oWsh As Worksheet, r As Range, sColName As Variant, i&, calc&
    Set AL = CreateObject("system.collections.arraylist") 'объект ArrayList, в него будем собирать заголовки столбцов
    With Application
        .ScreenUpdating = 0: .EnableEvents = 0: calc = .Calculation: .Calculation = xlCalculationManual
            With ThisWorkbook 'книга, из которой запущен макрос
                For Each oWsh In .Sheets ' перебираем листы книги
                    'перебираем области диапазона непустых ячеек из первой строки листа
                    For Each r In oWsh.UsedRange.Rows(1).SpecialCells(2, 23).Areas
                        For Each sColName In r.Value 'перебираем значения из ячеек из области
                            'если значение еще не добавлено в AL, то добавляем
                            If Not AL.contains(sColName) Then AL.Add sColName
                Next sColName, r, oWsh
                AL.Sort 'сортируем полученный список заголовков столбцов
                For Each oWsh In .Sheets ' перебираем листы
                    i = 1
                    For Each sColName In AL 'перебираем значения из списка заголовков
                        With oWsh.Rows(1) ' работаем с первой строкой листа
                            'ищем заголовок
                            Set r = .Find(sColName, , , xlWhole, , , False, , False)
                            If r Is Nothing Then ' если не найдено
                    'добавляем заголовок справа
                    .End(xlToRight).Offset(, 1) = sColName
                    Set r = .End(xlToRight)
                            End If
                            If r.Column <> i Then 'если номер столбца с искомым заголовком не равен позиции заголовка в AL
                    'перемещаем столбец в нужную позицию
                    r.EntireColumn.Cut: .Columns(i).Insert Shift:=xlToRight
                            End If
                            i = i + 1
                        End With
                Next sColName, oWsh
            End With
        .ScreenUpdating = 1: .EnableEvents = 1: .Calculation = calc
    End With
    Set AL = Nothing: Set r = Nothing
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 27.01.2019 в 00:29
krosav4ig Дата: Воскресенье, 27.01.2019, 02:44 | Сообщение № 1773 | Тема: Как исправить ошибку Method Run of object Application failed
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
Sub Овал1_Щелчок()
    Dim r As Range, col As Variant
    With ActiveSheet.UsedRange
        With Intersect(.Offset(5), .Cells)
            For Each r In .Rows
                For Each col In Array("Q", "Z")
                    With r.Columns(col)
                        If .Value <> "" Then
                            Macr = .Offset(, -7).Address(, , , 1)
                            Application.Run .Value
                            Application.Wait Now + #12:00:05 AM#
                        End If
                 End With
            Next col, r
        End With
    End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение[vba]
Код
Sub Овал1_Щелчок()
    Dim r As Range, col As Variant
    With ActiveSheet.UsedRange
        With Intersect(.Offset(5), .Cells)
            For Each r In .Rows
                For Each col In Array("Q", "Z")
                    With r.Columns(col)
                        If .Value <> "" Then
                            Macr = .Offset(, -7).Address(, , , 1)
                            Application.Run .Value
                            Application.Wait Now + #12:00:05 AM#
                        End If
                 End With
            Next col, r
        End With
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 27.01.2019 в 02:44
krosav4ig Дата: Воскресенье, 27.01.2019, 22:55 | Сообщение № 1774 | Тема: Power Query: Преобразовать двумерную таблицу в плоскую
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте, мышкотыком в четыре шага Отменить свертывание -> Добавить столбец -> Удалить столбец Значение -> Развернуть добавленный столбец
[vba]
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Дано"]}[Content],
    #"Несвернутые столбцы" = Table.UnpivotOtherColumns(Источник, {"Path"}, "Атрибут", "Значение"),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Несвернутые столбцы", "split", each Text.Split([Значение],", ") as list),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Добавлен пользовательский объект",{"Значение"}),
    #"Развернутый элемент split" = Table.ExpandListColumn(#"Удаленные столбцы", "split")
in
    #"Развернутый элемент split"
[/vba]
К сообщению приложен файл: 3240390.xlsx (24.8 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте, мышкотыком в четыре шага Отменить свертывание -> Добавить столбец -> Удалить столбец Значение -> Развернуть добавленный столбец
[vba]
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Дано"]}[Content],
    #"Несвернутые столбцы" = Table.UnpivotOtherColumns(Источник, {"Path"}, "Атрибут", "Значение"),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Несвернутые столбцы", "split", each Text.Split([Значение],", ") as list),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Добавлен пользовательский объект",{"Значение"}),
    #"Развернутый элемент split" = Table.ExpandListColumn(#"Удаленные столбцы", "split")
in
    #"Развернутый элемент split"
[/vba]

Автор - krosav4ig
Дата добавления - 27.01.2019 в 22:55
krosav4ig Дата: Воскресенье, 27.01.2019, 23:09 | Сообщение № 1775 | Тема: Как подтянуть разные данные к повторяющимся значениям
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
сделал вариант в Power Query, дабы освежить знания в памяти
На Листе2 ПКМ по ячейке таблицы -> Обновить
К сообщению приложен файл: PQ.xls (74.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениесделал вариант в Power Query, дабы освежить знания в памяти
На Листе2 ПКМ по ячейке таблицы -> Обновить

Автор - krosav4ig
Дата добавления - 27.01.2019 в 23:09
krosav4ig Дата: Вторник, 29.01.2019, 11:26 | Сообщение № 1776 | Тема: Оптимизация функции ЕСЛИ с несколькими условиями
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
что-то показалось мне что ТС нужна формула типа
Код
=СУММПРОИЗВ(ЗНАК(СЧЁТЕСЛИ(Реестр!B3:B83;Статьи!B2:B62));Статьи!C2:C62)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениечто-то показалось мне что ТС нужна формула типа
Код
=СУММПРОИЗВ(ЗНАК(СЧЁТЕСЛИ(Реестр!B3:B83;Статьи!B2:B62));Статьи!C2:C62)

Автор - krosav4ig
Дата добавления - 29.01.2019 в 11:26
krosav4ig Дата: Среда, 30.01.2019, 03:48 | Сообщение № 1777 | Тема: Оптимизация функции ЕСЛИ с несколькими условиями
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
scryde2015, держите сводную (PowerQuery+PowerPivot)
К сообщению приложен файл: 2019.7z.001 (99.8 Kb) · 2019.7z.002 (6.7 Kb)


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

Сообщение отредактировал krosav4ig - Среда, 30.01.2019, 05:12
 
Ответить
Сообщениеscryde2015, держите сводную (PowerQuery+PowerPivot)

Автор - krosav4ig
Дата добавления - 30.01.2019 в 03:48
krosav4ig Дата: Среда, 30.01.2019, 05:13 | Сообщение № 1778 | Тема: Оптимизация функции ЕСЛИ с несколькими условиями
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
scryde2015, Заменил файлы, на всяк случай, хотя вроде нормально открываются


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеscryde2015, Заменил файлы, на всяк случай, хотя вроде нормально открываются

Автор - krosav4ig
Дата добавления - 30.01.2019 в 05:13
krosav4ig Дата: Среда, 30.01.2019, 08:43 | Сообщение № 1779 | Тема: Оптимизация функции ЕСЛИ с несколькими условиями
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Повесил срез на таблицу Реестр (справа от таблицы), добавил UDF[vba]
Код
Public Function СрезВыбор(sName As String) As Variant
    Dim oSi As SlicerItem, i&, arr() As Variant
    On Error Resume Next
    Application.Volatile
    With ThisWorkbook.SlicerCaches(sName)
        For Each oSi In .SlicerItems
            If oSi.Selected Then
                ReDim Preserve arr(i)
                arr(i) = oSi.Value
                i = i + 1
            End If
        Next
    End With
    СрезВыбор = arr()
End Function
[/vba]
формула
Код
=СУММПРОИЗВ(ВПР(Т(ИНДЕКС(+СрезВыбор("Срез_Статья_расходов");));Статьи;2;))
возвращает сумму значений из таблицы Статьи по всем критериям фильтра столбца Статья расходов
если без среза и UDF, то массивная формула
Код
=СУММ(ЕСЛИОШИБКА((ЧАСТОТА(СТРОКА(Реестр)-МИН(СТРОКА(Реестр)-1);ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3;СМЕЩ(Реестр[Статья расходов];СТРОКА(Реестр)-МИН(СТРОКА(Реестр));;1))*ПОИСКПОЗ(Реестр[Статья расходов];Реестр[Статья расходов];))>0)*ВПР(Т(ИНДЕКС(+Реестр[Статья расходов];));Статьи;2;);))
собственно, в этой формуле можно заменить ссылки на умные таблицы ссылками на диапазоны
К сообщению приложен файл: 0066352.001 (99.8 Kb) · 7376559.002 (25.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеПовесил срез на таблицу Реестр (справа от таблицы), добавил UDF[vba]
Код
Public Function СрезВыбор(sName As String) As Variant
    Dim oSi As SlicerItem, i&, arr() As Variant
    On Error Resume Next
    Application.Volatile
    With ThisWorkbook.SlicerCaches(sName)
        For Each oSi In .SlicerItems
            If oSi.Selected Then
                ReDim Preserve arr(i)
                arr(i) = oSi.Value
                i = i + 1
            End If
        Next
    End With
    СрезВыбор = arr()
End Function
[/vba]
формула
Код
=СУММПРОИЗВ(ВПР(Т(ИНДЕКС(+СрезВыбор("Срез_Статья_расходов");));Статьи;2;))
возвращает сумму значений из таблицы Статьи по всем критериям фильтра столбца Статья расходов
если без среза и UDF, то массивная формула
Код
=СУММ(ЕСЛИОШИБКА((ЧАСТОТА(СТРОКА(Реестр)-МИН(СТРОКА(Реестр)-1);ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3;СМЕЩ(Реестр[Статья расходов];СТРОКА(Реестр)-МИН(СТРОКА(Реестр));;1))*ПОИСКПОЗ(Реестр[Статья расходов];Реестр[Статья расходов];))>0)*ВПР(Т(ИНДЕКС(+Реестр[Статья расходов];));Статьи;2;);))
собственно, в этой формуле можно заменить ссылки на умные таблицы ссылками на диапазоны

Автор - krosav4ig
Дата добавления - 30.01.2019 в 08:43
krosav4ig Дата: Среда, 30.01.2019, 11:14 | Сообщение № 1780 | Тема: ПОИСК адреса ячейки с наибольшим количеством символов
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
до кучи, если пренебречь округлением
Код
=ОСТАТ(МАКС(ДЛСТР(ВПР("*";Таблица1[@];{1;5;8;10};))+{1;5;8;10}%);1)/1%


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениедо кучи, если пренебречь округлением
Код
=ОСТАТ(МАКС(ДЛСТР(ВПР("*";Таблица1[@];{1;5;8;10};))+{1;5;8;10}%);1)/1%

Автор - krosav4ig
Дата добавления - 30.01.2019 в 11:14
Поиск:

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