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

Вход

Регистрация

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

 

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

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

Excel 2007,2010,2013
офис 64, там scriptcontrol вообще никак не работает.

Есть костыль


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

Есть костыль

Автор - krosav4ig
Дата добавления - 18.11.2016 в 16:58
krosav4ig Дата: Пятница, 18.11.2016, 14:25 | Сообщение № 1042 | Тема: Декодирование utf ->1251
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а у мну вот такая функция есть
[vba]
Код
Function Unescape$(uStr$)
    With CreateObject("scriptcontrol")
        .Language = "JScript"
        Unescape = .Eval("unescape(""" & uStr & """)")
    End With
End Function
[/vba]
и, на всякий случай, с помощью того же scriptcontrol можно парсить json, например вот
UPD.
Исправил косяк в коде


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

Сообщение отредактировал krosav4ig - Пятница, 18.11.2016, 18:10
 
Ответить
Сообщениеа у мну вот такая функция есть
[vba]
Код
Function Unescape$(uStr$)
    With CreateObject("scriptcontrol")
        .Language = "JScript"
        Unescape = .Eval("unescape(""" & uStr & """)")
    End With
End Function
[/vba]
и, на всякий случай, с помощью того же scriptcontrol можно парсить json, например вот
UPD.
Исправил косяк в коде

Автор - krosav4ig
Дата добавления - 18.11.2016 в 14:25
krosav4ig Дата: Четверг, 17.11.2016, 17:00 | Сообщение № 1043 | Тема: Слить 4 таблицы в одну с отбором по условию
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Совсем без макроса не получилось, ибо если делать формулами, то нужно постоянно следить за количеством строк в таблицах и протягивать формулы, что никак не вяжется с
Excel не знают никак и знать не хотят

все ненулевые (ошибки тоже распознаются как 0) строки из таблиц с листа Лист1 собираются подключением (Данные>подключения) в таблицу на листе Лист2
Таблица обновляется так же, как и сводная (ПКМ>Обновить)
сделал макрос для обновления параметров подключения и автообновления таблицы
в модуле Лист2[vba]
Код
Public WithEvents QTbl As QueryTable
Private Sub QTbl_BeforeRefresh(Cancel As Boolean)
    Dim arr() As Variant, i&, strSQL$, LO As ListObject
    For Each LO In Sheets("Лист1").ListObjects
        i = i + 1
        ReDim Preserve arr(i)
        arr(i) = LO.Range.Address(0, 0, 1, 1)
    Next
    With Application
        arr = .Substitute(.ReplaceB(arr, 1, Len(ThisWorkbook.Name) + 2, ""), "!", "$")
    End With
    strSQL = "select * from (" & Mid(Join(arr, "] union all select * from ["), 13) & "]) where Сумма"
    QTbl.Connection = "ODBC;DSN=Excel Files;DriverId=1046;DBQ=" & Parent.FullName
    QTbl.CommandText = strSQL
End Sub
Private Sub Worksheet_Activate()
    Init
    QTbl.Refresh
End Sub
[/vba]в модуле ЭтаКнига [vba]
Код
Private Sub Workbook_Open()
    Call Init
End Sub
[/vba]в стандартном модуле[vba]
Код
Public tbl As QueryTable
Sub Init()
    If tbl Is Nothing Then Set Лист2.QTbl = Лист2.ListObjects(1).QueryTable
    Set tbl = Лист2.QTbl
End Sub
[/vba]
К сообщению приложен файл: Example2.xlsm (61.8 Kb)


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

все ненулевые (ошибки тоже распознаются как 0) строки из таблиц с листа Лист1 собираются подключением (Данные>подключения) в таблицу на листе Лист2
Таблица обновляется так же, как и сводная (ПКМ>Обновить)
сделал макрос для обновления параметров подключения и автообновления таблицы
в модуле Лист2[vba]
Код
Public WithEvents QTbl As QueryTable
Private Sub QTbl_BeforeRefresh(Cancel As Boolean)
    Dim arr() As Variant, i&, strSQL$, LO As ListObject
    For Each LO In Sheets("Лист1").ListObjects
        i = i + 1
        ReDim Preserve arr(i)
        arr(i) = LO.Range.Address(0, 0, 1, 1)
    Next
    With Application
        arr = .Substitute(.ReplaceB(arr, 1, Len(ThisWorkbook.Name) + 2, ""), "!", "$")
    End With
    strSQL = "select * from (" & Mid(Join(arr, "] union all select * from ["), 13) & "]) where Сумма"
    QTbl.Connection = "ODBC;DSN=Excel Files;DriverId=1046;DBQ=" & Parent.FullName
    QTbl.CommandText = strSQL
End Sub
Private Sub Worksheet_Activate()
    Init
    QTbl.Refresh
End Sub
[/vba]в модуле ЭтаКнига [vba]
Код
Private Sub Workbook_Open()
    Call Init
End Sub
[/vba]в стандартном модуле[vba]
Код
Public tbl As QueryTable
Sub Init()
    If tbl Is Nothing Then Set Лист2.QTbl = Лист2.ListObjects(1).QueryTable
    Set tbl = Лист2.QTbl
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 17.11.2016 в 17:00
krosav4ig Дата: Среда, 16.11.2016, 18:07 | Сообщение № 1044 | Тема: Слить 4 таблицы в одну с отбором по условию
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Не хотят и делать не будут.

а хотя бы таблицу или сводную обновить смогут?


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

а хотя бы таблицу или сводную обновить смогут?

Автор - krosav4ig
Дата добавления - 16.11.2016 в 18:07
krosav4ig Дата: Среда, 16.11.2016, 18:03 | Сообщение № 1045 | Тема: Отключение фильтров не на активном листе
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
[vba]
Код
Sub конкретный_лист()
    With ThisWorkbook.Worksheets(1).ListObjects("rngX").AutoFilter
        If .FilterMode Then .ShowAllData
    End With
End Sub

Sub активный_лист()
    With ActiveSheet.ListObjects("rngX").AutoFilter
        If .FilterMode Then .ShowAllData
    End With
End Sub
[/vba]


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

Сообщение отредактировал krosav4ig - Среда, 16.11.2016, 18:04
 
Ответить
СообщениеЗдравствуйте
[vba]
Код
Sub конкретный_лист()
    With ThisWorkbook.Worksheets(1).ListObjects("rngX").AutoFilter
        If .FilterMode Then .ShowAllData
    End With
End Sub

Sub активный_лист()
    With ActiveSheet.ListObjects("rngX").AutoFilter
        If .FilterMode Then .ShowAllData
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 16.11.2016 в 18:03
krosav4ig Дата: Среда, 16.11.2016, 17:30 | Сообщение № 1046 | Тема: Изменение пользовательского свойства AutoCAD файла
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
Как-то так можно
[vba]
Код
Sub ChangeProps()
    Dim note$: note = "АБВГ"
    Dim FIO$: FIO = "Иванов"
    With CreateObject("DSOFile.OleDocumentProperties")
        .Open "D:\Шаблон.dwt", , 2
        With .CustomProperties
            On Error Resume Next
            .Add "ФИО", FIO
            .Add "Обозначение", note
            Err.Clear: On Error GoTo 0
            .Item("ФИО") = FIO
            .Item("Обозначение") = note
        End With
            .Save: .Close
    End With
End Sub
[/vba]
для работы нужно скачать и установить DSOfile


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

Сообщение отредактировал krosav4ig - Среда, 16.11.2016, 17:37
 
Ответить
СообщениеЗдравствуйте
Как-то так можно
[vba]
Код
Sub ChangeProps()
    Dim note$: note = "АБВГ"
    Dim FIO$: FIO = "Иванов"
    With CreateObject("DSOFile.OleDocumentProperties")
        .Open "D:\Шаблон.dwt", , 2
        With .CustomProperties
            On Error Resume Next
            .Add "ФИО", FIO
            .Add "Обозначение", note
            Err.Clear: On Error GoTo 0
            .Item("ФИО") = FIO
            .Item("Обозначение") = note
        End With
            .Save: .Close
    End With
End Sub
[/vba]
для работы нужно скачать и установить DSOfile

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

Excel 2007,2010,2013
одномерный массив последовательных чисел без цикла

в JS это длается довольно просто, например массив из n чисел с x по x+n-1 формируется вот так [vba]
Код
Array.apply(null, Array(n)).map(function(_,i){return i+x;})
[/vba] , а вот в vba через scriptcontrol подобная конструкция наотрез отказывается работать


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

Сообщение отредактировал krosav4ig - Вторник, 15.11.2016, 23:36
 
Ответить
Сообщение
одномерный массив последовательных чисел без цикла

в JS это длается довольно просто, например массив из n чисел с x по x+n-1 формируется вот так [vba]
Код
Array.apply(null, Array(n)).map(function(_,i){return i+x;})
[/vba] , а вот в vba через scriptcontrol подобная конструкция наотрез отказывается работать

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

Excel 2007,2010,2013
еще вариант

[vba]
Код
Sub test()
    Dim shtX As Worksheet
    Dim rngNew As Range
    Dim rngOld As Range
    
    Set shtX = ThisWorkbook.Worksheets(1)
    Set rngNew = shtX.Range("vNew")
    Set rngOld = shtX.Range("vOld")

    If UBound(Filter(Application.CountIf(rngNew, rngOld.Value), 0)) = -1 Then
        MsgBox "значения совпадают"   'если все значения массива совпадают
    Else
        MsgBox "значения различаются" 'если хотя бы одно не совпадает
    End If
    
End Sub
[/vba]


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

[vba]
Код
Sub test()
    Dim shtX As Worksheet
    Dim rngNew As Range
    Dim rngOld As Range
    
    Set shtX = ThisWorkbook.Worksheets(1)
    Set rngNew = shtX.Range("vNew")
    Set rngOld = shtX.Range("vOld")

    If UBound(Filter(Application.CountIf(rngNew, rngOld.Value), 0)) = -1 Then
        MsgBox "значения совпадают"   'если все значения массива совпадают
    Else
        MsgBox "значения различаются" 'если хотя бы одно не совпадает
    End If
    
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 15.11.2016 в 00:58
krosav4ig Дата: Понедельник, 14.11.2016, 23:18 | Сообщение № 1049 | Тема: Power Query использование в источнике обращения к ячейкам
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
как передать результат работы первого запроса

а что этот ваш запрос возвращает? (таблицу/список/json)
ограничение на кол-во игроков обрабатываемых в запросе (100)
а если первый запрос выдал > 100 игроков, то нужно писать udf с рекурсивным перебором
как "подсунуть ячейку в API-запрос?

на листе для ячейки делаем именованный диапазон Cell, в Power Query пишем [vba]
Код
= Excel.CurrentWorkbook(){[Name="Cell"]}[Content]{0}[Column1]
[/vba]
[p.s.]c примером файла гуру найдется быстрее


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

Сообщение отредактировал krosav4ig - Вторник, 15.11.2016, 02:33
 
Ответить
СообщениеЗдравствуйте
как передать результат работы первого запроса

а что этот ваш запрос возвращает? (таблицу/список/json)
ограничение на кол-во игроков обрабатываемых в запросе (100)
а если первый запрос выдал > 100 игроков, то нужно писать udf с рекурсивным перебором
как "подсунуть ячейку в API-запрос?

на листе для ячейки делаем именованный диапазон Cell, в Power Query пишем [vba]
Код
= Excel.CurrentWorkbook(){[Name="Cell"]}[Content]{0}[Column1]
[/vba]
[p.s.]c примером файла гуру найдется быстрее

Автор - krosav4ig
Дата добавления - 14.11.2016 в 23:18
krosav4ig Дата: Понедельник, 14.11.2016, 01:51 | Сообщение № 1050 | Тема: ИСТИНА, если "/" в ячейке встречается больше одного раза.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
У меня тоже
Код
=СЧЁТ(ПОИСК("/*/";A1))=1

Код
=СЧЁТЕСЛИ(A1;"*/*/*")=1


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеУ меня тоже
Код
=СЧЁТ(ПОИСК("/*/";A1))=1

Код
=СЧЁТЕСЛИ(A1;"*/*/*")=1

Автор - krosav4ig
Дата добавления - 14.11.2016 в 01:51
krosav4ig Дата: Воскресенье, 13.11.2016, 17:53 | Сообщение № 1051 | Тема: Переменная в операторе Sort
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
с тем самым Nil тоже всё работало
А это потому, что первой строкой модуля не прописано [vba]
Код
Option Explicit
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
с тем самым Nil тоже всё работало
А это потому, что первой строкой модуля не прописано [vba]
Код
Option Explicit
[/vba]

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

Excel 2007,2010,2013
kollega, имхо, в у вас файле не совсем правильный подсчет количества вариантов.
формулы вычисления количества и генерации комбинаций были спёрты отсюда
К сообщению приложен файл: Ex_1.xlsx (22.0 Kb)


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

Сообщение отредактировал krosav4ig - Воскресенье, 13.11.2016, 04:37
 
Ответить
Сообщениеkollega, имхо, в у вас файле не совсем правильный подсчет количества вариантов.
формулы вычисления количества и генерации комбинаций были спёрты отсюда

Автор - krosav4ig
Дата добавления - 13.11.2016 в 04:36
krosav4ig Дата: Воскресенье, 13.11.2016, 01:50 | Сообщение № 1053 | Тема: Переменная в операторе Sort
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а так понятнее будет?
К сообщению приложен файл: 5527543.gif (7.7 Kb)


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

Автор - krosav4ig
Дата добавления - 13.11.2016 в 01:50
krosav4ig Дата: Суббота, 12.11.2016, 22:06 | Сообщение № 1054 | Тема: Переменная в операторе Sort
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
И для чего нужен Nil?

Это я немного ступил, не из той оперы. Нету Nil в vba, там должен быть "" или vbnullstring или empty. А нужно это для того, чтобы перед единицей тоже вставился разделитель [vba]
Код
"," & s
[/vba], а [vba]
Код
mid(join( ... , ...),2)
[/vba] нужно чтобы убрать лишнюю запятую в начале
И есть еще один нюанс. Если при объявлении строковой переменной задана длина, то компилятор по дефолту присваивает этой переменной значение [vba]
Код
String(n," ")
[/vba],т.е. строка, состоящая из n пробелов, где n = объявленная длина. Поэтому вместо [vba]
Код
s <> ""
[/vba]нужно [vba]
Код
trim(s) <> ""
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
И для чего нужен Nil?

Это я немного ступил, не из той оперы. Нету Nil в vba, там должен быть "" или vbnullstring или empty. А нужно это для того, чтобы перед единицей тоже вставился разделитель [vba]
Код
"," & s
[/vba], а [vba]
Код
mid(join( ... , ...),2)
[/vba] нужно чтобы убрать лишнюю запятую в начале
И есть еще один нюанс. Если при объявлении строковой переменной задана длина, то компилятор по дефолту присваивает этой переменной значение [vba]
Код
String(n," ")
[/vba],т.е. строка, состоящая из n пробелов, где n = объявленная длина. Поэтому вместо [vba]
Код
s <> ""
[/vba]нужно [vba]
Код
trim(s) <> ""
[/vba]

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

Excel 2007,2010,2013
здравствуйте,
еще формула до кучи
Код
=ЕСЛИОШИБКА(СУММ(СУММЕСЛИМН(Таб1!$C$2:$C$24;Таб1!$A$2:$A$24;B$1;Таб1!$B$2:$B$24;$A2)^{0;1};-1);"")


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениездравствуйте,
еще формула до кучи
Код
=ЕСЛИОШИБКА(СУММ(СУММЕСЛИМН(Таб1!$C$2:$C$24;Таб1!$A$2:$A$24;B$1;Таб1!$B$2:$B$24;$A2)^{0;1};-1);"")

Автор - krosav4ig
Дата добавления - 11.11.2016 в 18:51
krosav4ig Дата: Пятница, 11.11.2016, 18:22 | Сообщение № 1056 | Тема: Переменная в операторе Sort
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте, у вас ошибка в блоке [vba]
Код
Select Case ... End Select
[/vba]
вот так будет правильно
[vba]
Код
    Select Case Left(s, 1)
        Case "M" 'M англ
            CusOrd = "M1,M2,M3,M4,M5,M6,M7,M8,M9,M10"
        Case "М" 'M русск
            CusOrd = "М1,М2,М3,М4,М5,М6,М7,М8,М9,М10"
    End Select
[/vba] или вот так
[vba]
Код
    f = Left(s, 1)
    Select Case True
        Case f = "M" 'M англ
            CusOrd = "M1,M2,M3,M4,M5,M6,M7,M8,M9,M10"
        Case f = "М" 'M русск
            CusOrd = "М1,М2,М3,М4,М5,М6,М7,М8,М9,М10"
    End Select
[/vba]или вообще вот так
[vba]
Код
CusOrd = Mid(Join(Array(Nil, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "," & Left(s, 1)), 2)
[/vba]
а если при объявлении переменной задать длину, то можно и не использовать Left()
[vba]
Код
Sub sort()
    Dim CusOrd As String
    Dim f As String * 1
    Dim LC As Integer
    Set twb = ActiveSheet 'ActiveWorkbook.Worksheets(1)
    With twb
        LC = .Cells(Rows.Count, 1).End(xlUp).Row
        f = .Range("c1").Value
        Select Case f
            Case "M", "М"
                CusOrd = Mid(Join(Array(Nil, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "," & f), 2)
            Case Else
                Exit Sub
        End Select
        .sort.SortFields.Clear
        .sort.SortFields.Add Key:=Range("C1:C" & LC), _
        SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:=CusOrd, DataOption:=xlSortNormal
        With .sort
            .SetRange Range("A1:D" & LC)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub
[/vba]


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

Сообщение отредактировал krosav4ig - Пятница, 11.11.2016, 18:41
 
Ответить
СообщениеЗдравствуйте, у вас ошибка в блоке [vba]
Код
Select Case ... End Select
[/vba]
вот так будет правильно
[vba]
Код
    Select Case Left(s, 1)
        Case "M" 'M англ
            CusOrd = "M1,M2,M3,M4,M5,M6,M7,M8,M9,M10"
        Case "М" 'M русск
            CusOrd = "М1,М2,М3,М4,М5,М6,М7,М8,М9,М10"
    End Select
[/vba] или вот так
[vba]
Код
    f = Left(s, 1)
    Select Case True
        Case f = "M" 'M англ
            CusOrd = "M1,M2,M3,M4,M5,M6,M7,M8,M9,M10"
        Case f = "М" 'M русск
            CusOrd = "М1,М2,М3,М4,М5,М6,М7,М8,М9,М10"
    End Select
[/vba]или вообще вот так
[vba]
Код
CusOrd = Mid(Join(Array(Nil, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "," & Left(s, 1)), 2)
[/vba]
а если при объявлении переменной задать длину, то можно и не использовать Left()
[vba]
Код
Sub sort()
    Dim CusOrd As String
    Dim f As String * 1
    Dim LC As Integer
    Set twb = ActiveSheet 'ActiveWorkbook.Worksheets(1)
    With twb
        LC = .Cells(Rows.Count, 1).End(xlUp).Row
        f = .Range("c1").Value
        Select Case f
            Case "M", "М"
                CusOrd = Mid(Join(Array(Nil, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "," & f), 2)
            Case Else
                Exit Sub
        End Select
        .sort.SortFields.Clear
        .sort.SortFields.Add Key:=Range("C1:C" & LC), _
        SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:=CusOrd, DataOption:=xlSortNormal
        With .sort
            .SetRange Range("A1:D" & LC)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 11.11.2016 в 18:22
krosav4ig Дата: Четверг, 10.11.2016, 18:49 | Сообщение № 1057 | Тема: Клуб 500
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
увидел свою репу, зашел сюда, а тут мну ужо напоздравляли.
Спасибо большое, очень приятно. :)


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

Автор - krosav4ig
Дата добавления - 10.11.2016 в 18:49
krosav4ig Дата: Вторник, 08.11.2016, 16:05 | Сообщение № 1058 | Тема: Какой командой можно вывести часть массива из памяти?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
имхо, лучше написать
[vba]
Код
        rr = Evaluate("Row(R" & r1 & ":R" & r2 & ")")
        cc = Evaluate("row(R" & c1 & ":R" & c2 & ")")
[/vba]дабы избежать ошибок при смене стиля ссылок на R1C1


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеимхо, лучше написать
[vba]
Код
        rr = Evaluate("Row(R" & r1 & ":R" & r2 & ")")
        cc = Evaluate("row(R" & c1 & ":R" & c2 & ")")
[/vba]дабы избежать ошибок при смене стиля ссылок на R1C1

Автор - krosav4ig
Дата добавления - 08.11.2016 в 16:05
krosav4ig Дата: Понедельник, 07.11.2016, 19:59 | Сообщение № 1059 | Тема: ИСТИНА, если "/" в ячейке встречается больше одного раза.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
и у мну тож 22 и 23 без =


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеи у мну тож 22 и 23 без =

Автор - krosav4ig
Дата добавления - 07.11.2016 в 19:59
krosav4ig Дата: Воскресенье, 06.11.2016, 22:20 | Сообщение № 1060 | Тема: Как узнать, какие иконки в сортировке
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
если сортировка по значку, то [vba]
Код
sortfield.sortonvalue
[/vba] - это обьект icon,
чтобы получить iconset просто обращаемся к его предку [vba]
Код
sortfield.sortonvalue.parent.id
[/vba] будет id используемого в столбце iconset'а


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеесли сортировка по значку, то [vba]
Код
sortfield.sortonvalue
[/vba] - это обьект icon,
чтобы получить iconset просто обращаемся к его предку [vba]
Код
sortfield.sortonvalue.parent.id
[/vba] будет id используемого в столбце iconset'а

Автор - krosav4ig
Дата добавления - 06.11.2016 в 22:20
Поиск:

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