Как в Excel удалить из телефонного номера все лишние знаки? Такие как: точка, дефис, кавычки и так далее.
ReinRaus
17.6k3 золотых знака43 серебряных знака84 бронзовых знака
задан 15 июн 2015 в 11:02
Предполагая что номер лежит в A1 (упоминается в двух местах):
=SUMPRODUCT(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1,ROW($1:$25),1))
*ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10)
Честно украдено с How do I strip out all non-numeric characters?
На русском (не проверял, перевел по таблице):
=СУММПРОИЗВ(ПСТР(0&A1,НАИБОЛЬШИЙ(ИНДЕКС(ЕЧИСЛО(--ПСТР(A1,СТРОКА($1:$25),1))
*СТРОКА($1:$25),0),СТРОКА($1:$25))+1,1)*10^СТРОКА($1:$25)/10)
ответ дан 15 июн 2015 в 12:20
1
Если число «лишних» символов ограничено, то можно использовать много вложенных «поставить» в формуле:
подставить( подставить(текст, ".", ""), "-", "" )
и так далее. Сколько символов, столько и «подставить».
Если нужно удалить все, кроме цифр, то помогут только макросы.
Внутри макроса как вариант можно использовать регулярные выражения:
dim re as New RegExp
re.Pattern = "\D"
re.replace( text, "" )
ответ дан 15 июн 2015 в 11:23
ReinRausReinRaus
17.6k3 золотых знака43 серебряных знака84 бронзовых знака
- Удалить символы * и ?
- Удалить символы по их типу
- Удалить все, кроме букв и цифр (удалить пунктуацию)
- Лишние пробелы
- Лишние символы справа / слева
- Цифры
- Буквы, латиница, кириллица
- Удалить всё, кроме…
- Удалить все, кроме цифр (извлечь цифры)
- Удалить все, кроме букв (извлечь буквы)
- Другое
- Другие операции с символами в Excel
Когда меня спрашивают, как удалить в Excel лишние символы, я не могу не задать ряд встречных вопросов:
- Что послужило причиной называть их лишними и избавиться от них?
- Что конкретно подразумевает процедура удаления? Мы будем непременно удалять их или заменим символы на какие-то другие, или, может быть, перенесем в другой столбец?
- Точно ли имеет смысл удалять сами символы? Может быть, стоит удалить из текста слова, в которых они содержатся? Или и вовсе содержимое ячеек целиком?
- Не проще ли вместо удаления этих символов рассматривать такую операцию, как извлечение из текста определенных символов кроме этих, удаляемых?
В зависимости от ответов на эти вопросы решений может быть много и разных. Где-то можно обойтись простейшими функциями, где-то подключить регулярные выражения, а где-то и вовсе понадобятся готовые программные решения. Итак, по порядку.
Удалить символы * и ?
См. Подстановочные символы в Excel.
Удалить символы по их типу
MS Excel не предлагает удаление символьных множеств по их признаку, единственной процедурой для удаления всегда остается “найти и заменить”, позволяющая удалять один символ или подстроку за раз. Но, если приложить некоторые усилия, все возможно.
Удалить все, кроме букв и цифр (удалить пунктуацию)
Удалить все символы, кроме букв и цифр, а иначе говоря, пунктуацию, — нетривиальная задача, ведь таких символов могут быть сотни! Но и она решается — смотрите статью на эту тему.
Лишние пробелы
Наиболее часто ненужными считаются повторяющиеся пробелы между словами или пробелы в конце и начале ячейки. Как убрать их, можно узнать из этой статьи.
Лишние символы справа / слева
Кто-то видит лишними символы справа или слева от основного текста в ячейке, желая отрезать их от него по позиции или по определенной границе. О том, как удалить N символов с начала или с конца каждой ячейки, читайте в этой статье.
В случае если границей является определенный символ и нужно удалить всё, что перед ним, поможет вот этот текст.
Цифры
Бывает, что ненужными символами становятся цифры, которых десять, и хочется более быстрый способ, чем очищать строки от них методом замены на пустоту. Как удалить цифры из текста в ячейках — этот раздел даст ответ на вопрос.
Буквы, латиница, кириллица
Аналогично сложно удалить разом все буквы алфавита, которых 26 или 33 в случае с английскими и русскими символами соответственно. О том, как удалить латиницу в Excel, читайте в моем гайдлайне.
Удалить всё, кроме…
Часты случаи, когда лишними считаются вообще все символы, кроме определенных. Тут речь уже больше об извлечении нужных символов, а не об удалении ненужных.
Удалить все, кроме цифр (извлечь цифры)
Номера телефонов, почтовые коды, числовые артикулы, IP адреса… Иногда проблемой является наличие в ячейках других символов, помимо цифр. Читайте об этом: Удалить всё, кроме цифр в ячейках Excel.
Удалить все, кроме букв (извлечь буквы)
Случай, когда в данных лишними являются любая пунктуация, цифры и прочие символы, кроме букв алфавита. Это могут быть:
- кириллица;
- латиница;
- любые буквы.
Другое
Хотите узнать, как удалять другие символы в Excel? Оставляйте комментарии под этой статьей.
Не всегда нужны такие кардинальные меры, как удаление символов. Иногда необходимо просто обнаружить их наличие, извлечь или заменить на какие-то другие. В решении подобных задач вам помогут соответствующие разделы сайта:
- Обнаружить символы;
- Извлечь символы;
- Изменить символы.
Также Microsoft Excel способен на полную мощность задействовать возможности регулярных выражений. Буквы, цифры, знаки препинания, специальные символы — регулярным выражениям подвластна работа с любыми данными. Подробнее на тему читайте в статье Регулярные выражения в Excel.
Смотрите также:
- Как удалять ячейки по условию в Excel;
- Как удалять определенные слова в Excel;
- Как удалять ненужные столбцы и строки по множеству условий;
- Как убрать формулы из ячеек и оставить только значения.
Хотите быстро удалять любые лишние символы или пробелы в ваших таблицах?
!SEMTools существенно расширит возможности вашего Excel.
На чтение 10 мин. Просмотров 626 Опубликовано 14.01.2021
Содержание
- Как удалить буквы из строк/чисел/ячеек в Excel?
- Удаление букв из строк/чисел/ячеек с формулой массива
- Пакетное разделение текста и чисел из одной ячейки/столбца на разные столбцы/строки
- Удаление букв из строк/чисел/ячеек с помощью функции, определяемой пользователем
- Удалите буквы из строк/чисел/ячеек с помощью функции EXTRACTNUMBERS в Kutools for Excel
- Удалите буквы из строк/чисел/ячеек с помощью утилиты Remove Character Kutools for Excel
- Демонстрация: удаление букв из строк/чисел/ячеек в Excel
- Статьи по теме:
- Лучшие инструменты для повышения производительности Office
- Kutools for Excel решает большинство ваших проблем и повышает производительность на 80%
- Вкладка “Office”. Интерфейс с вкладками добавлен в Office, что значительно упростит вашу работу.
Как удалить буквы из строк/чисел/ячеек в Excel?
В этой статье рассказывается о том, как удалить буквы из текстовых строк/ячеек/чисел в Excel . И мы предоставляем четыре метода для решения этой проблемы с помощью формулы массива, пользовательской функции и сторонней надстройки Kutools for Excel.
- Удалить буквы из строки/числа/ячейки с формулой массива
- Удаление букв из строк/чисел/ячеек с помощью функции, определяемой пользователем
- Удалите буквы из строк/чисел/ячеек с помощью утилиты Remove Character в Kutools for Excel
- Удалить буквы из строк/чисел/ячеек с функцией EXTRACTNUMBER Kutools for Excel
Вкладка Office Включает редактирование и просмотр с вкладками в Office и делает вашу работу намного проще …
Подробнее … Скачать бесплатно …
Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%.
- Повторное использование чего угодно: добавление наиболее часто используемых или сложных формул, диаграмм и всего остального в ваши избранные и быстро используйте их в будущем.
- Более 20 текстовых функций: извлечение числа из текстовой строки; Извлечь или удалить часть текстов; Преобразование чисел и валют в английские слова.
- Инструменты слияния: несколько книг и листов в одну; Объединить несколько ячеек/строк/столбцов без потери данных; Объедините повторяющиеся строки и суммируйте.
- Инструменты разделения: разделение данных на несколько листов на основе значения; Из одной книги в несколько файлов Excel, PDF или CSV; Один столбец в несколько столбцов.
- Вставить пропуск скрытых/отфильтрованных строк; Подсчет и сумма по цвету фона; Отправляйте персонализированные электронные письма нескольким получателям массово.
- Суперфильтр: создавайте расширенные схемы фильтров и применяйте их к любым листам; Сортировать по неделе, дню, частоте и т. Д. Фильтр жирным шрифтом, формулами, комментариями …
- Более 300 мощных функций; Работает с Office 2007-2019 и 365; Поддерживает все языки; Простое развертывание на вашем предприятии или в организации.
Подробнее … Бесплатная загрузка …
->
Удаление букв из строк/чисел/ячеек с формулой массива
Мы можем применить формулу массива для удаления букв из строк/чисел/ячеек в Excel. Пожалуйста, сделайте следующее:
1 . Выберите пустую ячейку, в которую вы вернете текстовую строку без букв, введите формулу = СУММ (СРЕДНЕЕ (0 & A2, НАИБОЛЬШИЙ (ИНДЕКС (ЕЧИСЛО (- СРЕДНЕЕ (A2, СТРОКА ($ 1: $ 99), 1)) * СТРОКА ($ 1: $ 99),), СТРОКА ($ 1: $ 99)) + 1,1) * 10 ^ ROW ($ 1: $ 99)/10) ( A2 – это ячейку, из которой вы удалите буквы) в нее и одновременно нажмите клавиши Ctrl + Shift + Enter время.
2 . Продолжайте выделять ячейку, а затем перетащите ее маркер заполнения в нужный диапазон. И теперь вы увидите, что все буквы удалены из исходных текстовых строк, как показано ниже:
Примечания :
(1) Эта формула массива удаляет все типы символов, кроме цифровых. Например, исходная текстовая строка – abc-859 * -24test, эта формула массива удалит все буквы и специальные символы (* и -) и вернет значение 85924.
(2) Если в тексте нет числа строка, эта формула массива вернет 0.
Пакетное разделение текста и чисел из одной ячейки/столбца на разные столбцы/строки
Kutools for Excel расширяет свою утилиту Split Cells и поддерживает пакетное разделение всех текстовых символов и чисел одной ячейки/столбца на два столбца/строки. Полнофункциональная бесплатная пробная версия, 30 дней!
Удаление букв из строк/чисел/ячеек с помощью функции, определяемой пользователем
Мы также можем добавить пользовательскую функцию в Excel для удаления букв из строк/чисел/ячеек. Пожалуйста, сделайте следующее:
1 . Одновременно нажмите клавиши Alt + F11 , чтобы открыть окно Microsoft Visual Basic для приложений.
2 . Щелкните Insert > Module , а затем скопируйте и вставьте следующий код в новое открывающееся окно модуля.
VBA: удаление букв из строк/чисел/ячеек в Excel
Функция StripChar (Txt As String) As StringWith CreateObject ("VBScript.RegExp"). Global = True.Pattern = " D" StripChar = .Replace (Txt, "") End WithEnd Function
3 . Сохраните эту пользовательскую функцию. Выберите пустую ячейку, в которую вы вернете текстовую строку без букв, и введите в нее формулу = StripChar (A2) (A2 – это ячейка, из которой вы удалите буквы) и перетащите маркер заполнения вниз до нужного диапазона. См. Скриншоты:
Примечания:
(1) Эта функция, определяемая пользователем, также может удалять все типы символов, кроме цифровых. Например, исходная текстовая строка – abc-859 * -24test, эта формула массива удалит буквы и специальные символы (* и -) и вернет значение 85924.
(2) Эта определяемая пользователем функция будет возвращать числа, хранящиеся как текстовые строки.
Удалите буквы из строк/чисел/ячеек с помощью функции EXTRACTNUMBERS в Kutools for Excel
Этот метод представит Kutools for Excel функцию EXTRACTNUMBERS , позволяющую легко удалить все буквы из строк/чисел/ячеек в Excel. Пожалуйста, сделайте следующее:
Kutools for Excel – включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Бесплатная пробная версия!
Kutools for Excel – объединяет более 300 дополнительных функций и инструментов для Microsoft Excel
Перейти к загрузке
Бесплатная пробная версия 60 днейПокупка
PayPal/MyCommerce
->
1 . Выберите пустую ячейку, вы вернете текстовую строку без букв, и нажмите Kutools > Функции > Текст > EXTRCTNUMBERS . См. Снимок экрана:
2 . В открывшемся диалоговом окне «Аргументы функции» укажите ячейку, из которой вы будете удалять буквы, в поле Txt , необязательно вводить TRUE или FAlSE в поле N и нажмите кнопку OK .
Примечание . При вводе TRUE будут возвращены числовые числа, при отсутствии ввода или FALSE вернет числа, хранящиеся в виде текстовых строк.
3 . Продолжайте выбирать ячейку и перетащите маркер заполнения в нужный диапазон. И тогда вы увидите, что все буквы удалены из исходных текстовых строк. См. Снимок экрана:
Kutools for Excel – Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Получить сейчас
Примечания:
(1) Вы можете ввести формулу = EXTRACTNUMBERS (A2, TRUE) непосредственно в выбранную ячейку, а затем перетащить дескриптор Fill в нужный диапазон.
(2) Эта функция EXTRACTNUMBERS также удалит все виды символы, кроме цифровых.
Удалите буквы из строк/чисел/ячеек с помощью утилиты Remove Character Kutools for Excel
Все вышеперечисленные методы удаляют все символы, кроме числовых. Но иногда вы можете захотеть удалить только буквы из текстовой строки, но оставить числовые символы и другие. Этот метод представит Kutools for Excel’s Удалить символы , чтобы сделать это легко в Excel.
Kutools for Excel – Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Бесплатная пробная версия!
Kutools for Excel – объединяет более 300 дополнительных функций и инструментов для Microsoft Excel
Перейти к загрузке
Бесплатная пробная версия 60 днейПокупка
PayPal/MyCommerce
->
1 . Выделите ячейки, из которых вы будете удалять буквы, и нажмите Kutools > Текст > Удалить символы .
2 . В открывшемся диалоговом окне «Удалить символы» установите флажок Alpha и нажмите кнопку Ok . И тогда вы увидите, что из выбранных ячеек удаляются только буквы. См. Снимок экрана:
Примечание . Если вы действительно хотите Удалите все виды символов, кроме числовых, вы можете установить флажок Нечисловые и нажать кнопку ОК в диалоговом окне «Удалить символы». См. Снимок экрана:
Kutools for Excel – Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Получить сейчас
Демонстрация: удаление букв из строк/чисел/ячеек в Excel
Kutools for Excel включает более 300 удобных инструментов для Excel, которые можно бесплатно попробовать без ограничений в течение 30 дней. Загрузить и бесплатную пробную версию !
Статьи по теме:
Как удалить числа из текстовых строк в Excel?
Лучшие инструменты для повышения производительности Office
Kutools for Excel решает большинство ваших проблем и повышает производительность на 80%
- Повторное использование : быстро вставляйте сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки паролем; Создавайте список рассылки и отправляйте электронные письма …
- Панель супер формул (легко редактировать несколько строк текста и формул); Чтение макета (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон …
- Объединить ячейки/строки/столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки/столбцы … Предотвратить дублирование ячеек; Сравнить диапазоны …
- Выбрать повторяющиеся или уникальные строки; Выберите пустые строки (все ячейки пусты); Супер поиск и нечеткий поиск во многих книгах; Случайный выбор …
- Точное копирование нескольких ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставьте маркеры, флажки и многое другое …
- Извлечь текст, добавить текст, удалить по позиции, удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии …
- Суперфильтр (сохранение и применение схем фильтрации к другим листам); Расширенная сортировка по месяцам/неделям/дням, частоте и другим параметрам; Специальный фильтр жирным шрифтом, курсивом …
- Объединить рабочие книги и рабочие таблицы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF …
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2019 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Группировка сводной таблицы по номеру недели, дню недели и другим параметрам … Показывать разблокированные, заблокированные ячейки разными цветами; Выделите ячейки с формулой/именем … ->
Подробнее .. . Бесплатная загрузка … Купить …
Вкладка “Office”. Интерфейс с вкладками добавлен в Office, что значительно упростит вашу работу.
- Включить редактирование и чтение с вкладками в Word, Excel, PowerPoint , Publisher, Access, Visio и Project.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Подробнее … Скачать бесплатно … Купить …
- 7 комментариев
- Войти
-
Сортировать по самым новым
- Лучшим
- популярным
- Новейшие
- Самый старый
Вы гость
или отправьте сообщение в качестве гостя, но ваше сообщение не будет опубликовано автоматически.
Загрузка комментария … Комментарий будет обновлен после 00:00.
-
Для публикации в качестве гостя ваш комментарий не публикуется.
АААААА. Наконец то, что работает! Gj!
- Ответ
-
Для публикации в качестве гостя ваш комментарий не будет опубликован.
Мне нужно удалить весь текст в ячейке, ЗА ИСКЛЮЧЕНИЕМ определенного набора слов. Например, список фруктов или овощей в столбце A, а столбец B содержит описание овощей, включая цвет, и я хочу удалить весь текст в ячейках столбца B, кроме цветных слов. Есть идеи?
- Ответ
-
Для публикации в качестве гостя ваш комментарий не будет опубликован.
Привет, я хочу спросить, есть ли формула для добавления точки к каждому сокращению в одной ячейке в предложении?
пример
825 яблочный рд ст. № 5 – я хочу добавить точку на «рд» и «ст», чтобы сделать его формальным
надеюсь, вы можете мне помочь
спасибо
- Ответить
-
Для публикации в качестве гостя ваш комментарий не будет опубликован.
Привет,
Функция добавления текста в Kutools for Excel может помочь вам решить проблему: https://www.extendoffice.com/ product/kutools-for-excel/excel-add-same-text-to-multiple-cells.html- Ответить
-
Для публикации в качестве гостя ваш комментарий не публикуется.
Formatunknown · 2 года назад
Что делать, если вы хотите сохранить формат числа или десятичных знаков? т.е. Apple30.01? за ответ 30.01? ваш vb бросает пятно?
- Ответ
-
Для публикации в качестве гостя ваш комментарий не публикуется.
Привет, Formatunknown,
В этой ситуации рекомендуется Kutools для Excel Удалить символы.
Выберите ячейки, включите функцию «Удалить символы», отметьте только параметр «Альфа» и нажмите кнопку «ОК», чтобы удалить все буквенные символы и оставить числа, включая десятичные разряды.-
doc-comments-3244.png
- Ответить
-
-
Для публикации в качестве гостя ваш комментарий не будет опубликован.
- Ответить
Оставить в ячейке только числа (удалить весь текст)
Данная команда позволяет массово удалять из текст множества ячеек весь текст кроме чисел:
Чтобы воспользоваться данной командой выделите ячейки с текстом из которых вы хотите удалить текст и оставить числа, перейдите во вкладку «ЁXCEL» Главного меню, нажмите кнопку «Ячейки» и выберите команду «Оставить в ячейке только числа (удалить весь текст)»:
В выделенных ячейках останутся только числа.
Для отмены операции нажмите кнопку отмены:
Добавить комментарий
Добрый день! |
|
skais675 Пользователь Сообщений: 2177 |
#2 28.05.2019 09:39:49 Отсюда
Изменено: skais675 — 28.05.2019 09:43:38 Мой канал |
||
Aleksey1107 Пользователь Сообщений: 363 Excel 365 |
Добрый день! Почитайте здесь |
bedvit Пользователь Сообщений: 2477 Виталий |
#5 29.05.2019 12:56:59 Нашел свою реализацию (немного подправил, версия от сегодняшнего числа). До двух раз быстрее на длинных строках и смешанном тексте (в сравнении с кодом, пост2). Выкладываю код и тест.
Прикрепленные файлы
Изменено: bedvit — 29.05.2019 13:09:29 «Бритва Оккама» или «Принцип Калашникова»? |
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, отличная функция, но для того, чтобы оставить кириллицу нужно что-то с ней сделать, т.к. преобразует в байты на 176 позиций назад и «разделяет» через 4, а не 0. То есть: ВАСЯ это не 194/0/192/0/209/0/223/0, а 18/4/16/4/33/4/47/4 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Ігор Гончаренко Пользователь Сообщений: 13746 |
#7 23.07.2019 15:46:08 RegExp с маской «D+» будет удалять символы не по одному, а группами, что существенно резвее
Изменено: Ігор Гончаренко — 23.07.2019 16:08:35 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, мой код делает именно то, что нужно было по теме. Если отбирать только кириллицу, нужно изменить в макросе коды нужных знаков Юникода . Помним, про «Ё». «Бритва Оккама» или «Принцип Калашникова»? |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#9 23.07.2019 16:08:53 Доброе время суток.
Протестировал на строке из 40 387 200 символов. Длина строки результата 301 800 (цифры только). |
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, я пока всё-равно остановился на регулярках, т.к. и быстрее и передавать аргумент (маску) проще и понятнее, НО серьёзно удивился способу формирования одномерного байтового массива напрямую arr() As Byte=txt$ и обратно (строки из массива) — очень круто Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
sokol92 Пользователь Сообщений: 4445 |
#11 23.07.2019 16:27:08
Рекомендовано разработчиком. Владимир |
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
sokol92, спасибо Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, спасибо, пользуйтесь. Изменено: bedvit — 23.07.2019 18:07:22 «Бритва Оккама» или «Принцип Калашникова»? |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#14 23.07.2019 20:53:20
Привет, Виталий.
Тестовый файл и код прикладываю. longText.zip в формате 7z (к сожалению форум не позволяет прикладывать архивы таком формате).
Прикрепленные файлы
|
|||||||
bedvit Пользователь Сообщений: 2477 Виталий |
По DigitsXLL понятно, это функция листа, в ячейку больше 32 тысяч не лезет. Сразу не сообразил. Что хотим потестировать? «Бритва Оккама» или «Принцип Калашникова»? |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#16 24.07.2019 08:57:32
Виталий, я максимум на Net. Вечером слеплю в ExcelDNA многопоточную версию для функции рабочего листа, протестирую. |
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, да — я понял, что с цифрами всё ОК, но вот дальше всё-равно не догоняю… В таблице (по вашей ссылке) Кириллица такая: 1025(Ё), 1040(А) — 1103(я), 1105(ё) Где тут логика и как поступать??? Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, здесь по-моему неплохо про это написано. Изменено: bedvit — 24.07.2019 12:47:14 «Бритва Оккама» или «Принцип Калашникова»? |
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, Вот здесь , я уже писал на этом форуме код, в такой же парадигме, для кириллицы. «Бритва Оккама» или «Принцип Калашникова»? |
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, и это никак не объясняет, откуда вы взяли 15, 80 и 81… С тем, как вы определяете кириллицу по разделителю «4» мне ясно, с 32 понятно — это код пробела при разделителе «0», но откуда остальные??? В таблице Юникода я что-то не то увидел… Изменено: Jack Famous — 24.07.2019 14:12:04 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, прочитали инфо по ссылке в посте 18? «Бритва Оккама» или «Принцип Калашникова»? |
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, нет)) я, балбес, признаю — не увидел UPD: итак, в таблице Юникод коды символов совпадают с таблицей в Excel (через =СИМВОЛ() или =Chr() в VBA) с 1 по 126, дальше пляска пошла))) Пока не могу только понять, как именно из них получить 16/4 или наоборот UPD2: всё — я понял калькулятором или функциями перегонять — всё равно непонятно Изменено: Jack Famous — 24.07.2019 16:11:51 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
#23 24.07.2019 18:28:55
1.Тест на 32767 знаков в каждой ячейке, на 1 млн. ячеек в Excel — 9 сек. (тест прилагаю, нужно открыть текст, нужной разрядности XLL, запустить)
Net time: 1130,113 мсек; digits count: 1299456; all count: 43895808 С++
digits count: 43895808 В Шарпе неудобно работать со строками, их нельзя изменять (при изменении, по факту, создается новая строка. Есть структура, где все же можно — System.Text.StringBuilder, но как видим работает «оно» медленно) Прикрепленные файлы
Изменено: bedvit — 24.07.2019 19:30:28 «Бритва Оккама» или «Принцип Калашникова»? |
||||
manat78 Пользователь Сообщений: 110 |
может как идея создать переменную (1)=»0123456789″ и потом каждый символ в тестируемом значении проверять на наличие в этой переменной (1) и если есть то сувать в еще одну переменную (2). и в конце менять значение на переменнную (2). незнаю на сколько это быстро будет))) |
sokol92 Пользователь Сообщений: 4445 |
#25 24.07.2019 20:26:45
В VBA (кроме, естественно, вызова функций рабочего листа) есть «родная» функция Hex для перевода из 10-тичной системы в 16-ричную. Для обратного перевода можно «схимичить», как указано ниже:
8-ричной системой ни разу в жизни в Excel не пользовался. Изменено: sokol92 — 24.07.2019 20:28:12 Владимир |
||||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#26 25.07.2019 08:36:08 sokol92, за функции спасибо — почти уверен, что они быстрее функций листа
но именно такая (кажется) получается при передаче строки байтному массиву Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
bedvit Пользователь Сообщений: 2477 Виталий |
#27 25.07.2019 14:18:10 Андрей VG, Андрей, можно еще немножко ускорить код на C#.NET, если перейти на указатели и небезопасный код (Unsafe code). см. вариант 4.
V1-Net time: 1079,1079 мсек; digits count: 1299456; all count: 43895808 Изменено: bedvit — 25.07.2019 15:13:42 «Бритва Оккама» или «Принцип Калашникова»? |
|
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#28 25.07.2019 21:44:16 Привет, Виталий.
Твой С++ вне сомнения лучший, причём деградирует заметно медленнее. RegEx на 1000000 строк минут 9 молотил, твой секунд за 30 справился — точно не засекал. Изменено: Андрей VG — 25.07.2019 21:45:32 |
||
bedvit Пользователь Сообщений: 2477 Виталий |
Андрей, спасибо за исследования! А DigitOnly — это код Игоря Гончаренко — выходит самый быстрый на VBA. Опять же с помощью сторонних библ. В теории я могу подлючить свою СОМ-библиотеку и обогнать в VBA — стандартную. Далее мой код на VBA, выходит 25 сек. без сторонних библиотек. Неплохо, но с библиотеками все же лучше. Считаю нужно все использовать, если есть возможность. По XLL — для интереса, возьми вариант 4 — на шарпе самый быстрый, не сильно уступает С++, заверни его в ExcelDNA. Предполагаю, отставание раза в два-пять всего лишь будет от С++. здесь и здесь . Изменено: bedvit — 25.07.2019 23:35:31 «Бритва Оккама» или «Принцип Калашникова»? |
Inexsu Пользователь Сообщений: 758 |
#30 25.07.2019 23:58:45 Привет!
Не забыли про
? Сравнение прайсов, таблиц — без настроек |
||||