Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 21 След.
Парсинг текста
 
Всем привет!
Даты из исходных строк получилось достать даже без предварительной обработки.
Версии находятся с ошибками (на 462 строки 80 ошибок, 17%). Помогите доработать!
Файл в посте №1.
Как реализовать функцию =ImportXML (google docs) в Excel?
 
Тимофеев, согласен. Остальное бы подтянуть...
Как реализовать функцию =ImportXML (google docs) в Excel?
 
Doober, здравствуйте!
Нашёл Ваш макрос 2014 года и похожий код в виде UDF, подставил свои URL и Xpath, - ответ #ПУСТО!.
Хотелось бы, чтобы работали:
=ImportXML("http://www.nyam.pe.kr/dev/imagine/doc/Whatsnew.txt")
=ImportXML("https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles­/Autodesk-Licensing-Service-Updates.html";"//tr[1]/td[1]|//tr[1]/td[4]")
=ImportXML("https://www.softpedia.com/get/Programming/File-Editors/Restorator.shtml";"//div[1]/span[2]|//h2/span")
Это текстовая, динамическая и статическая страницы.
Можете помочь?
Изменено: Acid Burn - 09.06.2023 16:27:17
Парсинг текста
 
nilske, вообще там была версия Microsoft Office, которую удобно отслеживать на одном Украинском сайте. ))
Парсинг текста
 
Msi2102, вот уж не ожидал. Да, 7 строк выбиралось с Украинских сайтов - строки убрал, файл заменил.
Парсинг текста
 
Up!
Парсинг текста
 
Alien Sphinx, первая версия UDF в посте #1. Не смог доделать, но думаю, что смысл ясен.
Буду рад, если кто-то предложит свои варианты. Может быть всё можно сделать проще?
Изменено: Acid Burn - 31.05.2023 02:50:01
Парсинг текста
 
Alien Sphinx, в смысле?
Исходный текст уж какой есть, его я изменить не могу.
Ожидаемый результат - дата в формате ГГГГ-ММ-ДД, пробел, кавычка, пробел, номер версии. Или что-то близкое по смыслу.
Пока пытаюсь что-то написать в таком духе:
- "оцифровываем" месяца (01^, 02^ и т.д.)
- удаляем всё, кроме цифр и символов .^
- разбираем строку на 2 блока - "дата » версия"
- преобразуем даты в формат "ГГГГ-ММ-ДД"
Изменено: Acid Burn - 30.05.2023 20:48:01
Парсинг текста
 
Всем привет!
Помогите распарсить текст, пожалуйста. Файл во вложении.
Изменено: Acid Burn - 06.06.2023 02:01:11
перевод на другой язык, как перевести ячейку, а перевод поместить в соседнюю ячейку
 
stalker138013, обновлённый файл в посте #22.
перевод на другой язык, как перевести ячейку, а перевод поместить в соседнюю ячейку
 
stalker138013, теперь понял. Исправил, файл там же.
Jack Famous, New, сделал немного иначе.
В VBA-версию GoogleTranslate добавил Function decodeHTML для замены всех кодов HTML соответствующими символами.
В XLS-версии оставил только замену кода апострофа на апостроф, т.к. функция и так длинная, как Вы и предлагали.

PS: вопрос на счёт того, как сделать, чтобы формула работала с массивом строк остаётся актуальным.
Я просто не знаю, как быть с разбивкой строк и каково ограничение Google Translate на длину строки...
Изменено: Acid Burn - 25.05.2023 13:02:35
перевод на другой язык, как перевести ячейку, а перевод поместить в соседнюю ячейку
 
stalker138013
На скриншоте 101010.jpg апострофа не было. Откуда оно берётся не знаю, у меня нет ни "& # 39;", ни апострофов.
Файл перезалил, проверяйте.

To All
Как бы сделать, чтобы формула работала сразу с массивом строк?
Изменено: Acid Burn - 25.05.2023 10:57:11
перевод на другой язык, как перевести ячейку, а перевод поместить в соседнюю ячейку
 
stalker138013, исправленная формула и UDF в посте #22.
Изменено: Acid Burn - 29.05.2023 15:29:18
Сбор данных всех ячеек всех листов для перевода
 
Кто-нибудь может помочь?
Сбор данных всех ячеек всех листов для перевода
 
Всем привет!
Сделал макрос, который выбирает данные из всех формул:
Код
Sub CollectFormulas()
  Dim ws As Worksheet, cell As Range, fileNum As Integer, FilePath As String, fileContents As String, output As String, quoteText As String
  FilePath = "C:\Формулы.txt"
  fileNum = FreeFile()
  Open FilePath For Output As fileNum
  For Each ws In ActiveWorkbook.Worksheets
    For Each cell In ws.UsedRange
      If cell.HasFormula Then Print #fileNum, cell.FormulaLocal
    Next cell
  Next ws
  Close fileNum
  Open FilePath For Input As #1
  fileContents = Input$(LOF(1), #1)
  Close #1
  For i = 1 To Len(fileContents)
    If Mid(fileContents, i, 1) = """" Then
      quoteText = ""
      For j = i + 1 To Len(fileContents)
        If Mid(fileContents, j, 1) = """" Then
          i = j: Exit For
        Else
          quoteText = quoteText & Mid(fileContents, j, 1)
        End If
      Next j
      quoteText = Trim(quoteText)
      If InStr(output, quoteText) = 0 Then output = output & quoteText & vbNewLine
    End If
  Next i
  Open FilePath For Output As #1
  Print #1, output
  Close #1
End Sub
И по идее всех элементов управления, диаграмм и комментариев:
Код
Sub CollectControls()
  Dim ws As Worksheet, shp As Shape, cht As ChartObject, cmt As Comment, FilePath As String
  FilePath = "C:\Controls.txt"
  Open FilePath For Output As #1
  For Each ws In ActiveWorkbook.Worksheets
  ' Проходим по всем элементам ActiveSheet.Shapes и собираем тексты
    For Each shp In ws.Shapes
      If shp.Type = msoFormControl Then
        Select Case TypeName(shp.ControlFormat)
          Case "CheckBox", "OptionButton", "GroupBox", "Button", "EditBox", "Label"
            If shp.ControlFormat.Value <> "" Then Print #1, shp.ControlFormat.Value
        End Select
      End If
    Next shp
  ' Проходим по всем элементам ActiveSheet.ChartObjects и собираем тексты
    For Each cht In ws.ChartObjects
      For Each shp In cht.Chart.Shapes
        If shp.Type = msoFormControl Then
          Select Case TypeName(shp.ControlFormat)
            Case "CheckBox", "OptionButton", "GroupBox", "Button", "EditBox", "Label"
              If shp.ControlFormat.Value <> "" Then Print #1, shp.ControlFormat.Value
          End Select
        End If
      Next shp
   Next cht
 ' Проходим по всем комментариям на листе и собираем тексты
   For Each cmt In ws.Comments
     If cmt.Text <> "" Then Print #1, cmt.Text
     Next cmt
   Next ws
 ' Проходим по всем комментариям в Range и собираем тексты
   For Each cmt In ActiveSheet.Comments
     If cmt.Text <> "" Then Print #1, cmt.Text
   Next cmt
   Close #1
End Sub
Первый работает, буду рад, если кто-то сможет оптимизировать.
Второй что-то выбирает, но не всё. Как доработать и объединить с CollectValues?
Изменено: Acid Burn - 23.05.2023 23:07:54
перевод на другой язык, как перевести ячейку, а перевод поместить в соседнюю ячейку
 
Тимофеев, отличный вариант! Спасибо! Добавил:
- массовую замену кодов HTML соответствующими символами
- VBA-функцию GoogleTranslate(B2;C2;D2) - обращений к серверу GoogleTranslate меньше и синтаксис удобнее
Изменено: Acid Burn - 29.05.2023 15:34:54
Расчёт вершин прямоугольника
 
Апострофф, огромное спасибо!
Расчёт вершин прямоугольника
 
Всем привет!
Помогите рассчитать координаты вершин прямоугольника, заданного высотой и координатами срединной линии.
Пока угол поворота 0 (пример 1), всё работает. Если есть поворот (пример 2), результат не правильный.
Пожалуйста, поправьте функцию. Файл во вложении.
С уважением.
Сбор данных всех ячеек всех листов для перевода
 
New, действительно, благодарю Вас!
Попробую заняться переводом, там будет видно, получилась ли выборка полноценной. )
Сбор данных всех ячеек всех листов для перевода
 
Ещё вариант - в выборке 1273 строки, тоже как-то маловато...
Код
Sub TranslateValues()
  Dim ws As Worksheet, cell As Range, dict As Object, arr() As Variant, i As Long, j As Long
  Set dict = CreateObject("Scripting.Dictionary")
' Перебираем все листы в книге
  For Each ws In ThisWorkbook.Worksheets
    For Each cell In ws.UsedRange.Cells ' 1273
      Select Case VarType(cell.Value)
        Case vbDouble, vbString
          If Not IsNumeric(cell.Value) And cell.Value <> "" And Not dict.exists(cell.Value) Then
            dict.Add cell.Value, 1
          End If
      End Select
    Next cell
  Next ws
' Создаем отсортированный массив без дубликатов
  ReDim arr(0 To dict.Count - 1)
  i = 0
  For Each Key In dict.keys
    arr(i) = Key
    i = i + 1
  Next Key
' Записываем значения из массива в столбец A на листе "Translate"
  Set ws = ThisWorkbook.Worksheets("Translate")
  For i = 0 To UBound(arr)
    If Not IsNumeric(arr(i)) Then arr(i) = CStr(arr(i))
  Next i
  ws.Range("A1").Resize(UBound(arr) + 1, 1).Value = Application.Transpose(arr)
' Удаляем дубликаты, сортируем
  ws.Range("$A:$A").RemoveDuplicates Columns:=1, Header:=xlNo
  With ws.Sort
    .SortFields.Clear
    .SortFields.Add Key:=ws.Range("A:A"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange ws.Range("A:A")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
End Sub
Сбор данных всех ячеек всех листов для перевода
 
Добрый вечер!
Помогите выбрать значения из всех ячеек всех листов книги Excel в словарь.
Словарь надо отсортировать и вывести на лист Translate для дальнейшей русификации.
Варианты из раздела "Приёмы" не подходят.
Набросок кода с просторов Интернета в файле (модуль mTranslate) - выбирает лишь 193 строки.
С уважением.
Изменено: Acid Burn - 12.05.2023 02:21:39
Пересчёт координат точек для построения контурной карты РФ
 
В принципе, получилось пересчитать XY обратно в GPS с помощью Sub Get_GPS.
Но хотелось бы ускорить и получить на финише не Sub, а UDF.

Пример в X21:Y21: по XY легко найти только ближайшую координату сетки (широта/долгота=60/30).
Уточнить координаты точки формулой, макросом через GoalSeekMultiple и т.д. не вышло.
Пришлось считать в Get_XY массив вокруг этой точки: взял 55-70 по широте и 25-40 по долготе с шагом 0,1.
Это уже 101*151=15251 точка и надо бы ещё больше, но не лезет из-за ошибки переполнения.
В общем, жесть какая-то. Как такую махину оптимизировать?
Изменено: Acid Burn - 16.04.2023 03:37:11
Пересчёт координат точек для построения контурной карты РФ
 
В W:Y сделал набросок формульного пересчёта XY обратно в GPS. Файл в посте №1.
Пока не очень точно - можно попереключать X7 и посмотреть на результаты.
На сегодня мозг сломался окончательно. )) Надеюсь, кто-нибудь подскажет, как повысить точность...
Пересчёт координат точек для построения контурной карты РФ
 
doober, добавил в файл в посте №1 формулу обратного пересчёта.
Честно говоря, какая-то ерунда получается...
Пересчёт координат точек для построения контурной карты РФ
 
doober, понял, благодарю!
А чем Кемь и Краснодар отличаются от всех остальных не удалось выяснить?
И главное - на сколько реально сделать обратный пересчёт XY в GPS?
Пересчёт координат точек для построения контурной карты РФ
 
doober, это тоже уже поправил. ХЗ, но что-то ещё не так... Сам массив цифр правильный, результат - нет.
Изменено: Acid Burn - 14.04.2023 17:43:39
Пересчёт координат точек для построения контурной карты РФ
 
doober, не заметил, исправил, заменил в посте №1.
Но лучше не стало - с чего оно от формульного результата отличается?
Пересчёт координат точек для построения контурной карты РФ
 
Всё же сделал формулу пересчёта GPS в XY на VBA.
Точнее к 2 формульным версиям в F:I (для обычных Office и Office 365)
написал 2 VBA-версии формул в J:M (вторая содержит таблицу подстановки, не ссылаясь на лист).
Но! Первая ошибается в 2 местах из 129, вторая вообще не хочет работать. ЧЯДНТ?
Файл в посте №1.
Помощь с определением языка текстовой строки
 
Скрыть консольное окно python оказалось просто: всего лишь заменить python.exe на pythonw.exe!
Изменено: Acid Burn - 07.04.2023 00:18:17
Помощь с определением языка текстовой строки
 
Всем привет!

Помогите написать функцию/макрос для определения языка текстовых строк.
Оказалось, что в Excel достаточно просто использовать PythonLangDetect:
1. Идём в Excel - жмём Alt+F11 - жмём Ctrl+M: импортируем
-- VBA-JSON-2.3.1\JsonConverter.bas
-- VBA-JSON-2.3.1\specs\Specs.bas (он новее рекомендованного VBA-Dictionary-1.4.1\specs\Specs.bas)
2. Распаковываем в "D:\python" архив Python 3.11.3 Embedded и файл get-pip.py
3. Убираем "#" со строки "import site" в "D:\python\python311._pth"
4. Открываем консоль в папке D:\python - пишем:
python get-pip.py
python -m pip install langdetect
python -c "from langdetect import detect; print(detect("Проверка"))
: получаем "ru"
Согласно ISO 639-1 всё правильно.

Достаточно не использовать пути с пробелами и нажать "Start" в приложенном xlsm.
Если рядом появилась папка (data) и "ru" в консоли, то всё работает (написал Function LNG и Sub LNG2).
Для 36 строк определение языка занимает 27,41 с. (7,6 с./10 строк) - очень медленно.
Для 36 строк 8 ошибочно, 16 правильно и для 12 тупо нет профиля - тоже не очень хорошо.
В целевых файлах есть все 36 языков, строк от 2500 до 5000.
Реально ли избавиться от окна Python, ускорить или чем-то заменить Function LNG?

С уважением.
Изменено: Acid Burn - 07.04.2023 03:23:22
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 21 След.
Наверх