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

Вход

Регистрация

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

 

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

Результаты поиска
krosav4ig Дата: Пятница, 16.12.2016, 03:31 | Сообщение № 961 | Тема: Поступления и выплаты: когда и какие выплачены поступления
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
еще вариант, VBA+Поиск решения
для работы нужно установить/загрузить надстройку Поиск решения и подключить ее в VBE (Tools>References>Solver)
[vba]
Код
Sub dd()
    Dim ar As Range, cell As Range, s%
    With Application: .ScreenUpdating = 0: .EnableEvents = 0:  End With
    With Cells(Rows.Count, 2).End(xlUp)
        With .Offset(4 - .Row).Resize(.Row - 4)
            If MsgBox("Очистить заполненные ячейки?", 36) = 6 Then _
                .Offset(, 3).ClearContents
            On Error Resume Next
            .Replace "Выплата", "=ZZ1"
            For Each ar In [ZZ1].Dependents.Areas
                For Each cell In ar.Cells
                    With cell
                        .Offset(, 3).Value = "-"
                        [F2].Formula = Join(Array("=SUMPRODUCT(D4:D", ",F4:F", _
                            "*ISBLANK(E4:E", ")*ISTEXT(B4:B", ")*(COUNTIFS($D$4:$D$", _
                            ",$D$4:$D$", ",$E$4:$E$", ","""",$C$4:$C$", ",""<""&C4:C", ")=0))-" & _
                            .Offset(0, 2).Value), .Row - 1)
                        [G2].Formula = "=$F$2=0"
                        [G3].Formula = "=COUNT($F$4:$F$" & .Row - 1 & ")"
                        [G4].FormulaArray = "=$F$4:$F$" & .Row - 1 & "=INT($F$4:$F$" & .Row - 1 & ")"
                        [G5].FormulaArray = "=$F$4:$F$" & .Row - 1 & "<=1"
                        [G6].FormulaArray = "=$F$4:$F$" & .Row - 1 & ">=0"
                        Solver.SolverLoad [G2:G6], False
                        SolverOk "$F$2", 3, 0, "$F$4:$F$" & .Row - 1, 2, "Simplex LP"
                        Select Case Solver.SolverSolve(True)
                            Case 0, 14
                    [F:F].Replace 1, "=ZZ2", xlWhole
                    [F2,G2:G6].ClearContents
                    Intersect([E:E], [ZZ2].Dependents.EntireRow).Value = .Offset(, 1)
                        End Select
                        .Value = "Выплата"
                    End With
            Next cell, ar
            .Offset(, 3).SpecialCells(4).Value = "Не выплачено"
            .Offset(-2, 4).Resize(.Count + 2, 2).ClearContents
        End With
    End With
    With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With
End Sub
[/vba]
К сообщению приложен файл: 4857594.xlsm (25.7 Kb)


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

Сообщение отредактировал krosav4ig - Пятница, 16.12.2016, 05:37
 
Ответить
Сообщениееще вариант, VBA+Поиск решения
для работы нужно установить/загрузить надстройку Поиск решения и подключить ее в VBE (Tools>References>Solver)
[vba]
Код
Sub dd()
    Dim ar As Range, cell As Range, s%
    With Application: .ScreenUpdating = 0: .EnableEvents = 0:  End With
    With Cells(Rows.Count, 2).End(xlUp)
        With .Offset(4 - .Row).Resize(.Row - 4)
            If MsgBox("Очистить заполненные ячейки?", 36) = 6 Then _
                .Offset(, 3).ClearContents
            On Error Resume Next
            .Replace "Выплата", "=ZZ1"
            For Each ar In [ZZ1].Dependents.Areas
                For Each cell In ar.Cells
                    With cell
                        .Offset(, 3).Value = "-"
                        [F2].Formula = Join(Array("=SUMPRODUCT(D4:D", ",F4:F", _
                            "*ISBLANK(E4:E", ")*ISTEXT(B4:B", ")*(COUNTIFS($D$4:$D$", _
                            ",$D$4:$D$", ",$E$4:$E$", ","""",$C$4:$C$", ",""<""&C4:C", ")=0))-" & _
                            .Offset(0, 2).Value), .Row - 1)
                        [G2].Formula = "=$F$2=0"
                        [G3].Formula = "=COUNT($F$4:$F$" & .Row - 1 & ")"
                        [G4].FormulaArray = "=$F$4:$F$" & .Row - 1 & "=INT($F$4:$F$" & .Row - 1 & ")"
                        [G5].FormulaArray = "=$F$4:$F$" & .Row - 1 & "<=1"
                        [G6].FormulaArray = "=$F$4:$F$" & .Row - 1 & ">=0"
                        Solver.SolverLoad [G2:G6], False
                        SolverOk "$F$2", 3, 0, "$F$4:$F$" & .Row - 1, 2, "Simplex LP"
                        Select Case Solver.SolverSolve(True)
                            Case 0, 14
                    [F:F].Replace 1, "=ZZ2", xlWhole
                    [F2,G2:G6].ClearContents
                    Intersect([E:E], [ZZ2].Dependents.EntireRow).Value = .Offset(, 1)
                        End Select
                        .Value = "Выплата"
                    End With
            Next cell, ar
            .Offset(, 3).SpecialCells(4).Value = "Не выплачено"
            .Offset(-2, 4).Resize(.Count + 2, 2).ClearContents
        End With
    End With
    With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 16.12.2016 в 03:31
krosav4ig Дата: Четверг, 15.12.2016, 17:17 | Сообщение № 962 | Тема: Как найти диспетчер имен на MAC в Excel 2016
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013


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

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

Excel 2007,2010,2013
Здравствуйте
так нужно?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With
    Select Case False
        Case Intersect(Target, Range("B4:C200")) Is Nothing
            With Cells(Target.Row, "A")
                If IsEmpty(.Cells) Then .Value = Now()
            End With
        Case Intersect(Target, Range("L4:L200")) Is Nothing
            With Cells(Target.Row, "M")
                If IsEmpty(.Cells) Then .Value = Now()
            End With
    End Select
    With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With
End Sub
[/vba]
К сообщению приложен файл: 2016-2.xlsm (23.6 Kb)


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

Сообщение отредактировал krosav4ig - Четверг, 15.12.2016, 14:45
 
Ответить
СообщениеЗдравствуйте
так нужно?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With
    Select Case False
        Case Intersect(Target, Range("B4:C200")) Is Nothing
            With Cells(Target.Row, "A")
                If IsEmpty(.Cells) Then .Value = Now()
            End With
        Case Intersect(Target, Range("L4:L200")) Is Nothing
            With Cells(Target.Row, "M")
                If IsEmpty(.Cells) Then .Value = Now()
            End With
    End Select
    With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With
End Sub
[/vba]

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

Excel 2007,2010,2013
Добрый день.
У вас неразрывные пробелы перед [vba]
Код
R =
[/vba]
и из-за этого VBE считает ее другой переменной (в Locals видно, там одна лишняя строчка)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеДобрый день.
У вас неразрывные пробелы перед [vba]
Код
R =
[/vba]
и из-за этого VBE считает ее другой переменной (в Locals видно, там одна лишняя строчка)

Автор - krosav4ig
Дата добавления - 15.12.2016 в 13:57
krosav4ig Дата: Четверг, 15.12.2016, 12:57 | Сообщение № 965 | Тема: база данных .csv как выгрузить IP адреса?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[offtop]А может МШ устроить? :) Есть немассивная формула 8178 без =, получающая 010.188.122.070 из 180124230


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

Сообщение отредактировал krosav4ig - Четверг, 15.12.2016, 14:02
 
Ответить
Сообщение[offtop]А может МШ устроить? :) Есть немассивная формула 8178 без =, получающая 010.188.122.070 из 180124230

Автор - krosav4ig
Дата добавления - 15.12.2016 в 12:57
krosav4ig Дата: Вторник, 13.12.2016, 16:36 | Сообщение № 966 | Тема: DB + Userform (Excel vs Access)
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
если проблема в отсутствии date picker, то можно решить ее так:
скопировать себе модули классов из файла отсюда
Прикрепление и извлечение различных файлов из книги Excel
у себя запустить
[vba]
Код
Sub ПрикрепитьФайл()    ' прикрепляем файл к книге Excel
    If IsError([SheetForAttachedFiles!A1]) Then
        With ThisWorkbook.Sheets
            With .Add(.Item(1))
                .Visible = xlVeryHidden
                .Name = "SheetForAttachedFiles"
            End With
        End With
    End If
    Dim FileManager As New AttachedFiles, res As Boolean
    res = FileManager.AttachNewFile(Environ("windir") & "\system32\mscomct2.ocx")
End Sub
[/vba]
на других компьютерах при открытии файла
[vba]
Код
Sub ИзвлечьФайл()    ' извлекаем и регистрируем
    Dim FileManager As New AttachedFiles, res As Boolean
    On Error Resume Next ' на случай, если среди вложений нет файла mscomct2.ocx
    If Dir$(Environ("windir") & "\system32\mscomct2.ocx") = "" Then _
    res = FileManager.GetAttachment("mscomct2.ocx").SaveAs(Environ("windir") & "\system32\mscomct2.ocx")
    CreateObject("wscript.shell").Run ("regsvr32.exe """ & Environ("windir") & "\system32\mscomct2.ocx" & """ /s")
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеесли проблема в отсутствии date picker, то можно решить ее так:
скопировать себе модули классов из файла отсюда
Прикрепление и извлечение различных файлов из книги Excel
у себя запустить
[vba]
Код
Sub ПрикрепитьФайл()    ' прикрепляем файл к книге Excel
    If IsError([SheetForAttachedFiles!A1]) Then
        With ThisWorkbook.Sheets
            With .Add(.Item(1))
                .Visible = xlVeryHidden
                .Name = "SheetForAttachedFiles"
            End With
        End With
    End If
    Dim FileManager As New AttachedFiles, res As Boolean
    res = FileManager.AttachNewFile(Environ("windir") & "\system32\mscomct2.ocx")
End Sub
[/vba]
на других компьютерах при открытии файла
[vba]
Код
Sub ИзвлечьФайл()    ' извлекаем и регистрируем
    Dim FileManager As New AttachedFiles, res As Boolean
    On Error Resume Next ' на случай, если среди вложений нет файла mscomct2.ocx
    If Dir$(Environ("windir") & "\system32\mscomct2.ocx") = "" Then _
    res = FileManager.GetAttachment("mscomct2.ocx").SaveAs(Environ("windir") & "\system32\mscomct2.ocx")
    CreateObject("wscript.shell").Run ("regsvr32.exe """ & Environ("windir") & "\system32\mscomct2.ocx" & """ /s")
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 13.12.2016 в 16:36
krosav4ig Дата: Вторник, 13.12.2016, 12:10 | Сообщение № 967 | Тема: Красивые числа на сайте
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
там еще одна спрятана
Код
9+3+9+0+3+9+6+9=48
Код
4+8=12
Код
1+2=3

:)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениетам еще одна спрятана
Код
9+3+9+0+3+9+6+9=48
Код
4+8=12
Код
1+2=3

:)

Автор - krosav4ig
Дата добавления - 13.12.2016 в 12:10
krosav4ig Дата: Понедельник, 12.12.2016, 22:51 | Сообщение № 968 | Тема: Как заложить в формулу ссылку на ячейку из предыдущего листа
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
ilya-yurasov, чтобы работала функция ПредыдущийЛист(), нужно код
[vba]
Код
Function ПредыдущийЛист() As Range
    With Parent.Caller.Parent
        Set ПредыдущийЛист = .Parent.Sheets(.Index - 1).UsedRange
    End With
End Function
[/vba]
вставить в стандартный модуль (он же просто модуль, про который писал Wasilich )
для этого
открываете свою книгу, где нужна эта функция
переводите раскладку клавиатуры на англицкий
зажимаете Alt и жмете по очереди F11 I M
вставляете вышеуказанный код, где заморгал текстовый курсор

из серии "Найди отличие"
Код
=ВПР(A3;cc;9;)

Код
=ВПР(A3;cc;9)


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

Сообщение отредактировал krosav4ig - Понедельник, 12.12.2016, 22:52
 
Ответить
Сообщениеilya-yurasov, чтобы работала функция ПредыдущийЛист(), нужно код
[vba]
Код
Function ПредыдущийЛист() As Range
    With Parent.Caller.Parent
        Set ПредыдущийЛист = .Parent.Sheets(.Index - 1).UsedRange
    End With
End Function
[/vba]
вставить в стандартный модуль (он же просто модуль, про который писал Wasilich )
для этого
открываете свою книгу, где нужна эта функция
переводите раскладку клавиатуры на англицкий
зажимаете Alt и жмете по очереди F11 I M
вставляете вышеуказанный код, где заморгал текстовый курсор

из серии "Найди отличие"
Код
=ВПР(A3;cc;9;)

Код
=ВПР(A3;cc;9)

Автор - krosav4ig
Дата добавления - 12.12.2016 в 22:51
krosav4ig Дата: Понедельник, 12.12.2016, 03:12 | Сообщение № 969 | Тема: Как заложить в формулу ссылку на ячейку из предыдущего листа
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
ilya-yurasov, если все-таки пользоваться макрофункциями, то лучше вторым вариантом из моего поста (с листом макросов), ибо могут возникнуть проблемы в расчетах при переключении на другие книги.
по поводу формулы - забыл указать последний аргумент. Должно быть так
Код
=ВПР(A3;cc;9;)

Добавил UDF
[vba]
Код
Function ПредыдущийЛист() As Range
    With Parent.Caller.Parent
        Set ПредыдущийЛист = .Parent.Sheets(.Index - 1).UsedRange
    End With
End Function
[/vba]
К сообщению приложен файл: 3854908.xlsm (25.3 Kb)


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

Сообщение отредактировал krosav4ig - Понедельник, 12.12.2016, 03:14
 
Ответить
Сообщениеilya-yurasov, если все-таки пользоваться макрофункциями, то лучше вторым вариантом из моего поста (с листом макросов), ибо могут возникнуть проблемы в расчетах при переключении на другие книги.
по поводу формулы - забыл указать последний аргумент. Должно быть так
Код
=ВПР(A3;cc;9;)

Добавил UDF
[vba]
Код
Function ПредыдущийЛист() As Range
    With Parent.Caller.Parent
        Set ПредыдущийЛист = .Parent.Sheets(.Index - 1).UsedRange
    End With
End Function
[/vba]

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

Excel 2007,2010,2013
ВПР
Код
=--ПРАВБ(ВПР(F3&" "&G3&"*";ТЕКСТ($B$3:$B$93;""""&$A$3:$A$93&""" ГГГГ-ММ-ДД"" 00:00:00.0000"&ПОВТОР(" ";60)&$C$3:$C$93&"""");1;);60)
К сообщению приложен файл: 3523069.xls (58.5 Kb)


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

Сообщение отредактировал krosav4ig - Пятница, 09.12.2016, 17:37
 
Ответить
Сообщение
ВПР
Код
=--ПРАВБ(ВПР(F3&" "&G3&"*";ТЕКСТ($B$3:$B$93;""""&$A$3:$A$93&""" ГГГГ-ММ-ДД"" 00:00:00.0000"&ПОВТОР(" ";60)&$C$3:$C$93&"""");1;);60)

Автор - krosav4ig
Дата добавления - 09.12.2016 в 17:37
krosav4ig Дата: Пятница, 09.12.2016, 16:49 | Сообщение № 971 | Тема: Скачать (Сохранить) файл с Яндекс-диска макросом Excel
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Эт я просто забыл, каким методом логин/пароль задавать, вот и решил посмотреть (на всякий случай, вдруг в проксю упрется). В MSDN лезть лень, добавил референс, зачем-то %) обьявил переменную, полез в object explorer, поковырялся там, нашел SetCredentials, но не нашел никакой инфы про HTTPREQUEST_SETCREDENTIALS_FLAGS, все равно пришлось лезть в MSDN, референс отключил, а переменную затереть забыл :(


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЭт я просто забыл, каким методом логин/пароль задавать, вот и решил посмотреть (на всякий случай, вдруг в проксю упрется). В MSDN лезть лень, добавил референс, зачем-то %) обьявил переменную, полез в object explorer, поковырялся там, нашел SetCredentials, но не нашел никакой инфы про HTTPREQUEST_SETCREDENTIALS_FLAGS, все равно пришлось лезть в MSDN, референс отключил, а переменную затереть забыл :(

Автор - krosav4ig
Дата добавления - 09.12.2016 в 16:49
krosav4ig Дата: Пятница, 09.12.2016, 11:48 | Сообщение № 972 | Тема: Скачать (Сохранить) файл с Яндекс-диска макросом Excel
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Вроде, лишняя
Вроде, лишняя (?)

ага, как-то сама затесалась #этнияоносамо :)
Может, оформить Готовым решением?

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


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеВроде, лишняя
Вроде, лишняя (?)

ага, как-то сама затесалась #этнияоносамо :)
Может, оформить Готовым решением?

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

Автор - krosav4ig
Дата добавления - 09.12.2016 в 11:48
krosav4ig Дата: Пятница, 09.12.2016, 09:55 | Сообщение № 973 | Тема: Скачать (Сохранить) файл с Яндекс-диска макросом Excel
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Исправил свой код, так должно работать
[vba]
Код
Private Const Login$ = "Логин", Pwd$ = "Пароль"
Private Const Host$ = "https://webdav.yandex.ru:443/"
Public Function DownloadFile(RemoteFilePath$, SaveTo)
    Dim FileContents() As Byte, LocalFilePath$
    SaveTo = IIf(Right(SaveTo, 1) = "\", SaveTo, SaveTo & "\")
    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "GET", urlencode(Host & RemoteFilePath$), True
        .SetRequestHeader "Host", "webdav.yandex.ru"
        .SetRequestHeader "Accept", "*/*"
        .SetRequestHeader "Authorization", "Basic " & Token
        .send
        .WaitForResponse
        FileContents = .responseBody
    End With
    LocalFilePath = SaveTo & StrReverse(Split(StrReverse(RemoteFilePath), "/")(0))
    If Dir(LocalFilePath) <> "" Then Kill LocalFilePath
    Open LocalFilePath For Binary Access Write As #1
    Put #1, 1, FileContents
    Close #1
    DownloadFile = LocalFilePath
End Function
Public Sub UploadFile(LocalFilePath$, RemotePath$)
    Dim FileContents As Variant, FileName$
    FileName = StrReverse(Split(StrReverse(LocalFilePath), "\")(0))
    RemotePath = IIf(RemotePath <> "", RemotePath & "/", "")
    With CreateObject("ADODB.Stream")
        .Type = 1: .Open: .LoadFromFile LocalFilePath: FileContents = .Read: .Close
    End With
    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "PUT", urlencode(Host & RemotePath & FileName), False
        .SetRequestHeader "Host", "webdav.yandex.ru"
        .SetRequestHeader "Accept", "*/*"
        .SetRequestHeader "Etag", MD5(FileContents)
        .SetRequestHeader "Sha256", Sha256(FileContents)
        .SetRequestHeader "Expect", "100-continue"
        .SetRequestHeader "Content-Type", "application/binary"
        .SetRequestHeader "Authorization", "Basic " & Token
        .SetRequestHeader "Content-Length", UBound(FileContents) + 1
        .send FileContents
        .WaitForResponse
        Debug.Print "Файл "; IIf(.StatusText = "Created", "успешно загружен", "не загружен")
    End With
End Sub
Private Function Str2Byte(str$) As Byte()
    Str2Byte = StrConv(str, vbFromUnicode)
End Function
Private Function urlencode$(url$)
    With CreateObject("scriptcontrol")
        .Language = "JavaScript"
        urlencode = .eval("encodeURI('" & url & "')")
    End With
End Function
Private Function MD5(ByVal bytes) As String
    Dim sTmp$, i%, byteArr() As Byte
    byteArr = bytes
    With CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
        byteArr = .ComputeHash_2(byteArr)
    End With
    For i = 0 To UBound(byteArr)
        sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2))
    Next
    MD5 = sTmp
End Function
Private Function Sha256(ByVal bytes) As String
    Dim sTmp$, i%, byteArr() As Byte
    byteArr = bytes
    With CreateObject("System.Security.Cryptography.SHA256Managed")
        byteArr = .ComputeHash_2(byteArr)
    End With
    For i = 0 To UBound(byteArr)
        sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2))
    Next
    Sha256 = sTmp
End Function
Private Function Token()
    With CreateObject("MSXML2.DOMDocument").createElement("b64")
        .DataType = "bin.base64"
        .nodeTypedValue = Str2Byte(Login & ":" & Pwd): Token = .Text
    End With
End Function
[/vba]


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

Сообщение отредактировал krosav4ig - Пятница, 09.12.2016, 14:00
 
Ответить
СообщениеИсправил свой код, так должно работать
[vba]
Код
Private Const Login$ = "Логин", Pwd$ = "Пароль"
Private Const Host$ = "https://webdav.yandex.ru:443/"
Public Function DownloadFile(RemoteFilePath$, SaveTo)
    Dim FileContents() As Byte, LocalFilePath$
    SaveTo = IIf(Right(SaveTo, 1) = "\", SaveTo, SaveTo & "\")
    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "GET", urlencode(Host & RemoteFilePath$), True
        .SetRequestHeader "Host", "webdav.yandex.ru"
        .SetRequestHeader "Accept", "*/*"
        .SetRequestHeader "Authorization", "Basic " & Token
        .send
        .WaitForResponse
        FileContents = .responseBody
    End With
    LocalFilePath = SaveTo & StrReverse(Split(StrReverse(RemoteFilePath), "/")(0))
    If Dir(LocalFilePath) <> "" Then Kill LocalFilePath
    Open LocalFilePath For Binary Access Write As #1
    Put #1, 1, FileContents
    Close #1
    DownloadFile = LocalFilePath
End Function
Public Sub UploadFile(LocalFilePath$, RemotePath$)
    Dim FileContents As Variant, FileName$
    FileName = StrReverse(Split(StrReverse(LocalFilePath), "\")(0))
    RemotePath = IIf(RemotePath <> "", RemotePath & "/", "")
    With CreateObject("ADODB.Stream")
        .Type = 1: .Open: .LoadFromFile LocalFilePath: FileContents = .Read: .Close
    End With
    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "PUT", urlencode(Host & RemotePath & FileName), False
        .SetRequestHeader "Host", "webdav.yandex.ru"
        .SetRequestHeader "Accept", "*/*"
        .SetRequestHeader "Etag", MD5(FileContents)
        .SetRequestHeader "Sha256", Sha256(FileContents)
        .SetRequestHeader "Expect", "100-continue"
        .SetRequestHeader "Content-Type", "application/binary"
        .SetRequestHeader "Authorization", "Basic " & Token
        .SetRequestHeader "Content-Length", UBound(FileContents) + 1
        .send FileContents
        .WaitForResponse
        Debug.Print "Файл "; IIf(.StatusText = "Created", "успешно загружен", "не загружен")
    End With
End Sub
Private Function Str2Byte(str$) As Byte()
    Str2Byte = StrConv(str, vbFromUnicode)
End Function
Private Function urlencode$(url$)
    With CreateObject("scriptcontrol")
        .Language = "JavaScript"
        urlencode = .eval("encodeURI('" & url & "')")
    End With
End Function
Private Function MD5(ByVal bytes) As String
    Dim sTmp$, i%, byteArr() As Byte
    byteArr = bytes
    With CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
        byteArr = .ComputeHash_2(byteArr)
    End With
    For i = 0 To UBound(byteArr)
        sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2))
    Next
    MD5 = sTmp
End Function
Private Function Sha256(ByVal bytes) As String
    Dim sTmp$, i%, byteArr() As Byte
    byteArr = bytes
    With CreateObject("System.Security.Cryptography.SHA256Managed")
        byteArr = .ComputeHash_2(byteArr)
    End With
    For i = 0 To UBound(byteArr)
        sTmp = sTmp & LCase(Right("0" & Hex(byteArr(i)), 2))
    Next
    Sha256 = sTmp
End Function
Private Function Token()
    With CreateObject("MSXML2.DOMDocument").createElement("b64")
        .DataType = "bin.base64"
        .nodeTypedValue = Str2Byte(Login & ":" & Pwd): Token = .Text
    End With
End Function
[/vba]

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

Excel 2007,2010,2013
Исправил формулу в предыдущем посте


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеИсправил формулу в предыдущем посте

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

Excel 2007,2010,2013
во второй формуле не учел пустые ячейки в ключах
вот так должно быть
Код
=МАКС((СУММПРОИЗВ(СЧЁТЕСЛИ(K3;"*"&ПСТР(Z3;СТРОКА(A$1:ИНДЕКС(A:A;МАКС(ДЛСТР(K3);ДЛСТР(Z3))));1)&"*")+СЧЁТЕСЛИ(Z3;"*"&ПСТР(K3;СТРОКА(A$1:ИНДЕКС(A:A;МАКС(ДЛСТР(K3);ДЛСТР(Z3))));1)&"*"))-МАКС(ДЛСТР(K3);ДЛСТР(Z3)))/МАКС(ДЛСТР(K3);ДЛСТР(Z3));--(Z3<=""))


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

Сообщение отредактировал krosav4ig - Пятница, 09.12.2016, 11:00
 
Ответить
Сообщениево второй формуле не учел пустые ячейки в ключах
вот так должно быть
Код
=МАКС((СУММПРОИЗВ(СЧЁТЕСЛИ(K3;"*"&ПСТР(Z3;СТРОКА(A$1:ИНДЕКС(A:A;МАКС(ДЛСТР(K3);ДЛСТР(Z3))));1)&"*")+СЧЁТЕСЛИ(Z3;"*"&ПСТР(K3;СТРОКА(A$1:ИНДЕКС(A:A;МАКС(ДЛСТР(K3);ДЛСТР(Z3))));1)&"*"))-МАКС(ДЛСТР(K3);ДЛСТР(Z3)))/МАКС(ДЛСТР(K3);ДЛСТР(Z3));--(Z3<=""))

Автор - krosav4ig
Дата добавления - 09.12.2016 в 06:23
krosav4ig Дата: Четверг, 08.12.2016, 23:39 | Сообщение № 976 | Тема: Как заложить в формулу ссылку на ячейку из предыдущего листа
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
До кучи,
решение через макрофункции в диспетчере имен (первый файл)
Код
aa    =ЯЧЕЙКА("имяфайла";ТЕКСТССЫЛ("RC"))
Код
bb    =ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1)
Код
cc    =ТЕКСТССЫЛ(ФОРМУЛА.ПРЕОБРАЗОВАТЬ("'"&ИНДЕКС(bb;ПОИСКПОЗ(ЗАМЕНИТЬ(aa;1;ПОИСК("[";aa)-1;);bb)-1)&"'!A2:I999";1;0;1))

формула в ячейке
Код
=ВПР(A2;cc;9)

И через скрытый лист макросов (второй файл)
в листе макросов
[vba]
Код
=АРГУМЕНТ("cell";8)
=ЯЧЕЙКА("имяФайла";cell)
=ПОИСК("[";A2)
=ПСТР(A2;A3+1;МУМНОЖ(ПОИСК({"]";"["};A2);{1:-1})-1)
=УСТАНОВИТЬ.ИМЯ("листы";ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1;A4))
="'"&ИНДЕКС(листы;ПОИСКПОЗ(ЗАМЕНИТЬ(A2;1;A3-1;);листы)-1)&"'!A2:I999"
=ВОЗВРАТ(ВПР(cell;ТЕКСТССЫЛ(ФОРМУЛА.ПРЕОБРАЗОВАТЬ(A6;1;0;1));9;))
[/vba]
в ячейке
Код
=НачалоСмены(A2)
К сообщению приложен файл: 9894033-1.xlsm (14.4 Kb) · 9894033-2.xlsm (15.7 Kb)


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

Сообщение отредактировал krosav4ig - Четверг, 08.12.2016, 23:49
 
Ответить
СообщениеДо кучи,
решение через макрофункции в диспетчере имен (первый файл)
Код
aa    =ЯЧЕЙКА("имяфайла";ТЕКСТССЫЛ("RC"))
Код
bb    =ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1)
Код
cc    =ТЕКСТССЫЛ(ФОРМУЛА.ПРЕОБРАЗОВАТЬ("'"&ИНДЕКС(bb;ПОИСКПОЗ(ЗАМЕНИТЬ(aa;1;ПОИСК("[";aa)-1;);bb)-1)&"'!A2:I999";1;0;1))

формула в ячейке
Код
=ВПР(A2;cc;9)

И через скрытый лист макросов (второй файл)
в листе макросов
[vba]
Код
=АРГУМЕНТ("cell";8)
=ЯЧЕЙКА("имяФайла";cell)
=ПОИСК("[";A2)
=ПСТР(A2;A3+1;МУМНОЖ(ПОИСК({"]";"["};A2);{1:-1})-1)
=УСТАНОВИТЬ.ИМЯ("листы";ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1;A4))
="'"&ИНДЕКС(листы;ПОИСКПОЗ(ЗАМЕНИТЬ(A2;1;A3-1;);листы)-1)&"'!A2:I999"
=ВОЗВРАТ(ВПР(cell;ТЕКСТССЫЛ(ФОРМУЛА.ПРЕОБРАЗОВАТЬ(A6;1;0;1));9;))
[/vba]
в ячейке
Код
=НачалоСмены(A2)

Автор - krosav4ig
Дата добавления - 08.12.2016 в 23:39
krosav4ig Дата: Четверг, 08.12.2016, 22:26 | Сообщение № 977 | Тема: Excel.ActiveWorkbook.Save в режиме редактирования/записи
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
первой строкой пишем[vba]
Код
If GetAttr(ThisWorkbook.FullName) And 1 Then Exit Sub
[/vba]


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

Сообщение отредактировал krosav4ig - Четверг, 08.12.2016, 22:27
 
Ответить
Сообщениепервой строкой пишем[vba]
Код
If GetAttr(ThisWorkbook.FullName) And 1 Then Exit Sub
[/vba]

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

Excel 2007,2010,2013
Здравствуйте так нужно?
Код
=ТЕКСТ(СУММПРОИЗВ(СЧЁТЕСЛИ(K3;"*"&ПСТР(Z3;СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР(Z3)));1)&"*")+СЧЁТЕСЛИ(Z3;"*"&ПСТР(K3;СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР(K3)));1)&"*"))/2;"[=0]0;[="&ДЛСТР(K3)&"]1;""0,5""")+ЕПУСТО(Z3)

или может быть даже так (второй файл)
Код
=МАКС((СУММПРОИЗВ(СЧЁТЕСЛИ(K3;"*"&ПСТР(Z3;СТРОКА(A$1:ИНДЕКС(A:A;МАКС(ДЛСТР(K3);ДЛСТР(Z3))));1)&"*")+СЧЁТЕСЛИ(Z3;"*"&ПСТР(K3;СТРОКА(A$1:ИНДЕКС(A:A;МАКС(ДЛСТР(K3);ДЛСТР(Z3))));1)&"*"))-МАКС(ДЛСТР(K3);ДЛСТР(Z3)))/МАКС(ДЛСТР(K3);ДЛСТР(Z3));)
К сообщению приложен файл: 3752978.zip (68.1 Kb) · 2240013.zip (68.2 Kb)


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

Сообщение отредактировал krosav4ig - Четверг, 08.12.2016, 20:04
 
Ответить
СообщениеЗдравствуйте так нужно?
Код
=ТЕКСТ(СУММПРОИЗВ(СЧЁТЕСЛИ(K3;"*"&ПСТР(Z3;СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР(Z3)));1)&"*")+СЧЁТЕСЛИ(Z3;"*"&ПСТР(K3;СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР(K3)));1)&"*"))/2;"[=0]0;[="&ДЛСТР(K3)&"]1;""0,5""")+ЕПУСТО(Z3)

или может быть даже так (второй файл)
Код
=МАКС((СУММПРОИЗВ(СЧЁТЕСЛИ(K3;"*"&ПСТР(Z3;СТРОКА(A$1:ИНДЕКС(A:A;МАКС(ДЛСТР(K3);ДЛСТР(Z3))));1)&"*")+СЧЁТЕСЛИ(Z3;"*"&ПСТР(K3;СТРОКА(A$1:ИНДЕКС(A:A;МАКС(ДЛСТР(K3);ДЛСТР(Z3))));1)&"*"))-МАКС(ДЛСТР(K3);ДЛСТР(Z3)))/МАКС(ДЛСТР(K3);ДЛСТР(Z3));)

Автор - krosav4ig
Дата добавления - 08.12.2016 в 19:47
krosav4ig Дата: Четверг, 08.12.2016, 18:58 | Сообщение № 979 | Тема: Импорт XML > Excel
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
К сообщению приложен файл: Import.xlsx (13.7 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеимпорт по карте xml не подходит?
создание карты
Сопоставление XML-элементов ячейкам листа
Импорт данных по существующей карте xml

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

Excel 2007,2010,2013
Здравствуйте
как-то так
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ($A2;СИМВОЛ(10);ПОВТОР(" ";999));СТОЛБЕЦ(A2)*999+1;999))
К сообщению приложен файл: _1-2-.xlsx (10.1 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
как-то так
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ($A2;СИМВОЛ(10);ПОВТОР(" ";999));СТОЛБЕЦ(A2)*999+1;999))

Автор - krosav4ig
Дата добавления - 08.12.2016 в 18:07
Поиск:

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