Как извлечь только числа из ячейки Excel (7 простых способов)

  • Поделись Этим
Hugh West

Хотя Microsoft не предоставила прямой формулы или синтаксиса для извлекать только числа из ячейки Excel, мы можем включить широкий спектр Формулы Excel сделать единую функцию, которую можно использовать для извлечения из ячеек Excel только чисел или цифр. В этой статье мы постараемся подробно показать и объяснить, как с помощью соответствующих формул можно вывести из ячеек только числа при соблюдении нескольких критериев.

Скачать Практическое пособие

Скачайте бесплатно книгу для практики, которую мы использовали при подготовке этой статьи. Вы можете вводить текстовые значения с числами в выделенные ячейки и сразу же находить результаты с помощью встроенных формул.

Извлечение чисел из ячеек.xlsm

7 эффективных способов извлечения только чисел из ячейки Excel

Здесь будет один код VBA, одна функция Excel и пять практических формул, которые помогут вам извлечь числа из ячейки. Как на рисунке ниже, у нас есть несколько кодов, включающих цифры и буквы, где цифры присутствуют в начале. Нам нужно извлечь только эти цифры или числа.

1. Извлечение чисел из начала текста

В этом первом методе мы объединим СЛЕВА , SUM , LEN и ЗАМЕНИТЕ функции для извлечения чисел из начала текстовой строки. Сначала мы введем эту формулу в ячейку, а затем, используя рукоятка наполнения , мы скопируем эту формулу в остальные ячейки.

Шаги:

  • Во-первых, введите формулу в ячейку C5 .

=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0","1","2","3","4","5","6","7","8","9"},""))))

  • Во-вторых, нажмите Войти и вы получите число 34 для первого кода.

  • В-третьих, используйте Наполнительная рукоятка затем для автозаполнения всех остальных ячеек в столбце C .

🔎 Разбивка формулы

SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")

  • Здесь ЗАМЕНИТЕ функция последовательно найдет цифры (0-9) и, если найдет, то заменит эту цифру в ячейке B5 каждый раз с пустым символом. Таким образом, функция будет возвращать {"34DTXRF", "34DTXRF", "34DTXRF", "4DTXRF", "3DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF", "34DTXRF"}.

LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))

  • Сайт LEN функция определяет количество символов в строке. Таким образом, здесь LEN Функция подсчитает все символы, встречающиеся в текстах по отдельности, через ЗАМЕНИТЬ функция. Результирующие значения будут в нашем случае - {7,7,7,7,6,6,7,7,7,7,7}.

LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")))

  • Теперь эта часть представляет собой вычитание из количества символов в ячейке B5 ко всем остальным числам символов, найденным по отдельности в предыдущем разделе формулы. Таким образом, здесь результирующие значения будут - {0,0,0,0,1,1,0,0,0,0,0}.

SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},"")))

  • Сайт SUM Затем функция просто просуммирует все вычитаемые значения, найденные & таким образом, результат будет здесь, 2 (0+0+0+1+1+0+0+0+0+0).

=LEFT(B5,SUM(LEN(B5)-LEN(SUBSTITUTE(B5,{"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″},""))))

  • И вот заключительная часть, в которой СЛЕВА функция вернет значения с точным количеством символов слева от найденного в предыдущем разделе формулы. Так как мы получили значение суммы равное 2, функция СЛЕВА функция здесь будет возвращать только 34 из текста 34DTXRF .

Похожие: Как разделить числа в Excel с помощью формулы (5 способов)

2. Извлечение чисел из правой части текста

В этом разделе мы будем извлекать числа или цифры из правой части текстовой строки. Мы будем использовать функцию ПРАВИЛЬНО , МИН и ПОИСК функции здесь.

Шаги:

  • Для начала, в нашем наборе данных то, что мы должны ввести в ячейку C5 это -

=RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789")) +1)

  • После этого нажмите Войти и затем использовать Наполнительная рукоятка для автозаполнения остальных ячеек.

🔎 Разбивка формулы

B5& "0123456789″

  • Здесь мы конкатенируем значения в B5 клетка с 0123456789 с помощью амперсанд (&) между ними и получим результирующее значение - DTXRF340123456789.

SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″)

  • Теперь ПОИСК Функция будет искать все цифры (0-9) по одной в результирующем значении, полученном из предыдущего раздела, и вернет позиции этих 10 цифр в символах символа DTXRF340123456789 Таким образом, наши результирующие значения будут {8,9,10,6,7,13,14,15,16,17}.

MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5&”0123456789″))

  • Сайт MIN Функция используется для нахождения наименьшей цифры или числа в массиве. Таким образом, здесь минимальное или наименьшее значение будет... 6 из массива {8,9,10,6,7,13,14,15,16,17}, найденного в предыдущем разделе формулы.

LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)

  • Теперь, количество символов в B5 будет найден по LEN Затем она вычтет значение 6 (найденное в последнем разделе) и вернет результат, прибавив 1. В нашем случае результирующим значением будет 2 (7-6+1) .

RIGHT(B5,LEN(B5) - MIN(SEARCH({0,1,2,3,4,5,6,7,8,9}, B5& "0123456789″)) +1)

  • Сайт ПРАВИЛЬНО функция вернет заданное количество символов из последней или правой части строки. Следуя результату, найденному в процессе вычитания в предыдущем разделе, здесь функция ПРАВИЛЬНО функция покажет последние 2 символа из ячейки B5 и это будет 34 .

Читать далее: Как разделить числа в одной ячейке в Excel (5 способов)

3. Извлечение чисел из любой части текстовой строки

Этот метод позволит извлечь числа или цифры из любой позиции текстовой строки. Более того, мы будем использовать TEXTJOIN , IFERROR , INDIRECT , MID и ROW функции в этом методе.

Шаги:

  • Сначала введите формулу в целевую ячейку следующим образом -

=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1)*1),"")))

  • Затем, если вы используете Excel 2016 или более поздней версии, затем нажмите Войти , в противном случае нажмите Ctrl+Shift+Enter чтобы получить результат для этой формулы массива.
  • После этого шага выполните автозаполнение других ячеек с помощью функции Наполнительная рукоятка и все готово.

🔎 Разбивка формулы

INDIRECT("1:"&LEN(B5))

  • Сайт INDIRECT Функция используется для хранения массива значений ячеек в виде текста ссылки. Здесь амперсанд (&) команда конкатенирует длину символов ячейки B5 с неполным синтаксисом диапазона (1:) .
  • Итак, здесь INDIRECT функция будет хранить все числа от 1 до длины символов в ячейке B5 в качестве справочного текста.

ROW(INDIRECT("1:"&LEN(B5))))

  • Сайт ROW функция обычно сообщает номер строки ячейки, но здесь в INDIRECT функция, поскольку не была упомянута ни одна ссылочная ячейка, в этом случае ROW функция извлечет все значения или числа из справочных текстов, хранящихся в INDIRECT функция.
  • Теперь, для 1-й ячейки B5 , результирующие значения через эти ROW и INDIRECT функции будут - {1;2;3;4;5;6;7;8;9}.

(MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1))

  • Сайт MID функция позволит вам определить символы из середины текстовой строки, заданной начальной позицией & длиной.
  • Итак, здесь для всех 9 позиций, найденных в предыдущем разделе, в MID Теперь функция будет показывать все символы по одному для каждой позиции & таким образом, она вернет значения {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.

IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1)*1),"")

  • Теперь IFERROR это логическая функция, которая определит, является ли строка числом или чем-то другим. Если она не идентифицирует строку с числами или цифрами, то вернет значение с заданной текстовой командой.
  • В нашем случае все значения, найденные в последнем разделе, будут умножены на 1, и когда результаты будут возвращены как ошибки значений для букв или текстовых значений, которые не могут быть умножены, их IFERROR Функция преобразует ошибки в пустые строки. Таким образом, наши результирующие значения будут иметь вид {1;9;"";"";"";"";"";"";"";"";"";"";"";"";"";""}.

=TEXTJOIN("",TRUE,IFERROR((MID(B5,ROW(INDIRECT("1:"&LEN(B5)))),1)*1),"")))

  • И теперь последняя часть будет выполнена через TEXTJOIN Эта функция используется для конкатенации или соединения двух строк с указанным разделителем.
  • Таким образом, результирующие значения, которые мы нашли в предыдущем разделе, теперь будут объединены вместе с этим TEXTJOIN функцию. Таким образом, мы получим число 192.

Читать далее: Как извлечь несколько чисел из строки в Excel (6 методов)

4. Вложение нескольких функций для получения только чисел

Сейчас мы покажем вам еще одну формулу для извлечения из ячейки Excel только чисел из любой позиции. Хотя она может показаться довольно сложной, мы разобьем всю формулу и постараемся легко объяснить все компактные функции. Кроме того, мы будем использовать ЕСЛИ , БОЛЬШОЙ , ИНДЕКС , SUMPRODUCT и ISNUMBER функции в этой формуле.

  • Для начала введите эту формулу в ячейку C5 Вам нужно заменить ссылку на ячейку только на основе вашей собственной ячейки в электронной таблице, а затем, внедрив эту формулу, вы сразу же получите ожидаемый результат. И эта формула прекрасно работает в любой версии Excel.

=IF(SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&B5, LARGE(INDEX(ISNUMBER(--MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")

  • После этого необходимо нажать Войти только после ввода всей формулы, и все готово.

🔎 Разбивка формулы

Прежде чем начать разбивку этой массивной & компактной формулы, мы можем разделить ее на некоторые части, такие как...

=IF(A>0, SUMPRODUCT(B 1 *C 1 , B 2 *C 2 , ..........B n C n ),"")

Этот синтаксис означает, что если A больше 0, то все произведения B n и C n будут складываться в конечный результат. И если A не больше 0, то результат будет возвращен в виде пустой или незаполненной ячейки.

  • A = SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″ }, ""
  • B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5)))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1))
  • C = 10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"""

Разбивка части A = SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″ }, ""

SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″ }, "")

  • Сайт ЗАМЕНИТЕ функция найдет все цифры (0-9) по одной в тексте 19 DDX2MN каждый раз и будет заменять эти цифры пустой строкой в позициях цифр.
  • Таким образом, результирующие значения в массиве будут иметь вид {"19 DDX2MN", "9 DDX2MN", "19 DDXMN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "19 DDX2MN", "1 DDX2MN"}.

LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″ }, ""))

  • Сайт LEN Теперь функция подсчитает количество символов во всех строковых значениях, полученных из предыдущего раздела. Таким образом, эта функция вернет в виде {9,8,8,8,9,9,9,9,9,9,8}.

LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″ }, ""))

  • Теперь в этой части формулы ряд символов в ячейке B5 вычесть все числа, найденные в предыдущем разделе. Полученные значения будут иметь вид {0,1,1,0,0,0,0,0,0,0,1}.

SUM(LEN(B5)-LEN(SUBSTITUTE(B5, {"0″, "1″, "2″, "3″, "4″, "5″, "6″, "7″, "8″, "9″ }, "")))

  • С помощью SUM функции, значения внутри массива, найденного в последней секции, сложатся в 3 (0+1+1+0+0+0+0+0+0+1).
  • Итак, согласно первой части нашей формулы, A>0 (3>0) Теперь перейдем к следующей части разбивки.

Разбивка части B = MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1))* ROW(INDIRECT("$1:$"&LEN(B5))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1))

INDIRECT("$1:$"&LEN(B5))

  • Сайт INDIRECT функция здесь будет хранить строковые значения как ссылку на массив. Внутри скобки амперсанд (&) команда объединит количество символов, найденных в ячейке B5 с синтаксисом Range of cells. Это означает, что от 1 до заданного количества символов, каждый будет храниться как ссылка на массив.

ROW(INDIRECT("$1:$"&LEN(B5)))

  • Теперь, это ROW функция извлечет все числа из массива и результирующие значения для ячейки B5 будет - {1;2;3;4;5;6;7;8;9}.

MID(B5,ROW(INDIRECT("$1:$"&LEN(B5))),1)

  • В этой части формулы MID функция выразит все символы из ячейки B5 на основе всех позиций, найденных как номера в предыдущем разделе. Таким образом, извлеченные значения будут найдены после этой части - {"1″; "9″;" "; "D"; "D"; "X"; "2″; "M"; "N"}.

ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)))),1))

  • Как ISNUMBER является логической функцией, она определит индивидуально, являются ли значения, найденные в предыдущем разделе, числовыми строками или нет. Если да, то она вернет в виде TRUE , в противном случае он будет отображаться как FALSE .
  • Итак, в нашем случае результат будет таким: {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}.

INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)))),1))*ROW(INDIRECT("$1:$"&LEN(B5)))),0)

  • Если вы заметили, что внутри приведенной выше функции стоит двойной тире, известный как Двойной унарный Он используется для преобразования всех логических значений в числовые строки. 1(ИСТИНА) или 0(FALSE) . Теперь ИНДЕКС функция вернет этот результат в виде {1;1;0;0;0;0;0;1;0;0}.
  • После этого результирующие значения умножаются на значения, полученные из ROW функцию внутри массива и результат будет - {1;2;0;0;0;0;0;7;0;0}.

LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)))),1))*ROW(INDIRECT("$1:$"&LEN(B5)))),0), ROW(INDIRECT("$1:$"&LEN(B5))))

  • Сайт БОЛЬШОЙ Функция теперь переставит наибольшие значения из массива в соответствии с позициями, основанными на числах, найденных в ROW функции. & наши результирующие значения для этого участка формулы будут- {7;2;1;0;0;0;0;0;0;0;0;0}.

MID(0&B5, LARGE(INDEX(ISNUMBER(-MID(B5,ROW(INDIRECT("$1:$"&LEN(B5)))),1))*ROW(INDIRECT("$1:$"&LEN(B5)))),0), ROW(INDIRECT("$1:$"&LEN(B5))))+1,1))

  • Теперь, эта часть функции будет конкатенировать 0 с текстами в ячейке B5 . Тогда он добавит 1 индивидуально со всеми числами, найденными в последнем разделе, и покажите символы из B5 ячейку на основе определенных позиций чисел.
  • Итак, наш результат в этом разделе будет следующим - {"2″; "9″; "1″; "0″; "0″; "0″; "0″; "0″; "0″; "0″ }.

Разбивка части C = (10^ROW(INDIRECT("$1:$"&LEN(B5)))/10),"")

  • В этой части будут определены степени 10 & сохраните их в массиве. Цифры степени - это числа, найденные из массива ROW функцию ранее.
  • Эта часть формулы вернет значения {1;10;100;1000;10000;100000;1000000;10000000;1000000}.

Умножение B n и C n

  • Теперь результирующие значения от двух последних крупных поломок B и C будут перемножены внутри массива. Тогда продукты, найденные в результате умножения, будут- {2;90;100;0;0;0;0;0;0;0;0}.
  • И, наконец, в SUMPRODUCT функция просуммирует эти значения, найденные в массиве. Таким образом, наш конечный результат будет следующим 192 (2+90+100+0+0+0+0+0+0) , который представляет собой извлеченные числа из ячейки B5 .

Читать далее: Как разделить текст и числа в Excel (4 простых способа)

5. извлечение пятизначных чисел из строки

Для извлечения пятизначных чисел из любой части строки в Excel мы будем использовать другую формулу. Мы воспользуемся формулой CONCAT и SEQUENCE Кроме того, мы немного изменили наш набор данных для этого метода.

Шаги:

  • Во-первых, выберите диапазон ячеек C5:C12 .
  • Во-вторых, введите следующую формулу.

=CONCAT(IFERROR(0+MID(B5,SEQUENCE(LEN(B5)),1),"")))

  • Наконец, нажмите Ctrl+Enter .

🔎 Разбивка формулы

  • LEN(B5)
    • Выход: 11 .
    • Эта функция возвращает длину строки.
  • SEQUENCE(11)
    • Output: {1;2;3;4;5;6;7;8;9;10;11} .
    • Эта функция возвращает первые одиннадцать чисел.
  • MID(B5,{1;2;3;4;5;6;7;8;9;10;11},1)
    • Выход: {"1″; "9″;"; "Г"; "Д"; "Х"; "2″; "М"; "Н"; "3″; "3″} .
    • Используя эту часть, мы получаем отдельные символы из строки.
  • 0+{"1″; "9″;"; "Г"; "Д"; "Х"; "2″; "М"; "Н"; "3″; "3″}
    • Выход: {1;9;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;2;#VALUE!;#VALUE!;3;3} .
    • Когда мы добавляем ноль к строке, она возвращает ошибку.
  • IFERROR({1;9;#ЗНАЧЕНИЕ!;#ЗНАЧЕНИЕ!;#ЗНАЧЕНИЕ!;#ЗНАЧЕНИЕ!;#ЗНАЧЕНИЕ!;2;#ЗНАЧЕНИЕ!;#ЗНАЧЕНИЕ!;3;3},"")
    • Выход: {1;9;"";"";"";"";"";2;"";"";"";3;3} .
    • Мы получаем пустое место для всех значений ошибки.
  • CONCAT({1;9;"";"";"";"";"";2;"";"";"";3;3})
    • Выход: 19233 .
    • Наконец, мы складываем все значения, чтобы извлечь только пятизначные числа.

6. Использование заливки вспышкой для извлечения чисел из диапазона

Использование сайт Заполнение вспышкой Мы будем извлекать числа из любой позиции в текстовых строках. Чтобы правильно выполнить этот метод, мы должны помочь Excel найти шаблон значений ячеек в столбце или строке, выполнив извлечение только для первых двух значений.

Шаги:

  • Для начала введите числа вручную в ячейку C5 .

  • Затем начните вводить числа из ячейки B6 в ячейку C6 и Excel автоматически распознает шаблон.
  • Наконец, нажмите Войти .

Примечания: Этот метод имеет некоторые недостатки, поэтому он не рекомендуется для всех случаев, когда необходимо извлечь числа из текстовых строк. The Заполнение вспышкой обычно следует шаблону ячеек в столбце или диапазоне. Поэтому первые 2-3 извлечения или вычисления приходится выполнять вручную, чтобы помочь Excel усвоить общий шаблон результирующих значений. Но иногда он не следует точному шаблону, который нам нужен, и, таким образом, он следует своему собственному шаблону и выдает несовпадающий результат.

Например, если нам нужно извлечь два нуля (00) из приведенных данных, он покажет только один ноль, а не два. Если вы хотите извлечь числа из начальной или последней позиции в ячейке, он извлечет и текстовые значения вместе с числами.

Читать далее: Как извлечь числа после определенного текста в Excel (2 подходящих способа)

7. Применение кода VBA для извлечения только чисел из ячейки Excel

Если вы заинтересованы в использовании Макрос Excel VBA чтобы извлекать из ячеек только числа, тогда вам стоит выполнить следующие шаги. Мы покажем вам, как набрать код в ячейке Модуль VBA Этот код попросит пользователя указать диапазоны входных и выходных ячеек.

Шаги:

  • Во-первых, нажмите ALT+F11 чтобы открыть VBA окно.
  • Затем, из Вставка выберите вкладку Модуль команда. Появится новое окно модуля, в котором вы введете коды.

  • В-третьих, внутри вашего модуля вставьте следующие коды после копирования.
 Option Explicit Sub ExtractNumbersOnly() Dim CellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Выборка входных данных" DBxName2 = "Выборка выходных ячеек" Set InBx1 = Application.InputBox("Входной диапазон текстовых ячеек:", _ DBxName1, "", Type:=8)If TypeName(InBx1) = "Nothing" Then Exit Sub Set InBx2 = Application.InputBox("Select Output Cells:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nothing" Then Exit Sub Iteration = 0 XtrNum = "" For Each CellValue In InBx1 Iteration = Iteration + 1 NumChar = Len(CellValue) For StartChar = 1 To NumChar If IsNumeric(Mid(CellValue, StartChar, 1)) Then XtrNum = XtrNum & Mid(CellValue,StartChar, 1) End If Next StartChar InBx2.Item(Iteration) = XtrNum XtrNum = "" Next CellValue End Sub 

  • После этого нажмите F5 для выполнения кода. На экране появится диалоговое окно с именем " Выбор входных данных " появится.
  • Затем выделите все текстовые ячейки (т.е. B5:B12 ) и нажмите OK .

  • После этого появится еще одно диалоговое окно с именем " Выбор выходной ячейки " появится окно, в котором нужно выбрать определенную ячейку или диапазон ячеек, чтобы увидеть выходные данные или значения.
  • Наконец, выберите диапазон ячеек C5:C12 и нажмите Войти .

  • Таким образом, вы увидите извлеченные числа из текста все сразу. На этом мы закончим рассмотрение семи быстрых методов извлечения чисел только из ячейки Excel.

🔎 Разбивка кода VBA

Объявление параметров

 Option Explicit Sub ExtractNumbersOnly() Dim cellValue As Range Dim InBx1 As Range Dim InBx2 As Range Dim NumChar As Integer Dim StartChar As Integer Dim XtrNum As String Dim DBxName1 As String Dim DBxName2 As String Dim Iteration As Integer DBxName1 = "Выборка входных данных" DBxName2 = "Выборка выходных ячеек" 
  • Здесь, в этой части, сначала мы объявляем все параметры как целые числа, строковые значения или диапазоны ячеек. Затем мы даем имена нашим диалоговым окнам с помощью "Выбор входных данных" и "Выбор выходной ячейки" .

Определение типов входов и выходов для диалоговых окон

 Set InBx1 = Application.InputBox("Входной диапазон текстовых ячеек:", _ DBxName1, "", Type:=8) If TypeName(InBx1) = "Nothing" Then Exit Sub Set InBx2 = Application.InputBox("Select Output Cells:", _ DBxName2, "", Type:=8) If TypeName(InBx2) = "Nothing" Then Exit Sub Iteration = 0 XtrNum = "" 
  • Теперь мы определяем параметры и их типы для диалоговых окон. Здесь добавление Type:=8 означает, что входные и выходные данные будут состоять из ссылочных ячеек или диапазона ячеек.
  • Мы также определяем, что если входные данные не найдены, то подпрограмма остановится. Упомянув этот макрос, подпрограмма не сломается из-за отсутствия данных, а скорее прекратит свою работу.

Объединение функций внутри кода Циклы для итераций

 For Each cellValue In InBx1 Iteration = Iteration + 1 NumChar = Len(cellValue) For StartChar = 1 To NumChar If IsNumeric(Mid(cellValue, StartChar, 1)) Then XtrNum = XtrNum & Mid(cellValue, StartChar, 1) End If Next StartChar InBx2.Item(Iteration) = XtrNum XtrNum = "" Next cellValue End Sub 
  • И, наконец, это самая важная часть, где мы применяем функции или формулы, которые нам нужно присвоить текстам, чтобы найти результирующие значения из строк.
  • Одним из основных преимуществ кодирования функции для Excel является то, что нет необходимости набирать большую формулу, как это приходилось делать в предыдущих методах, поскольку VBA имеет встроенные команды для использования циклов For или While, в которых итерация для каждой детали в текстовой строке может быть выполнена без каких-либо затруднений.

Читать далее: Как отделить числа от текста в Excel VBA (3 способа)

Заключение

Мы показали вам 7 простых способов извлекать только числа Извлечение только чисел из текстовой строки не так просто, как кажется, поскольку требует комбинации нескольких функций, что делает конечную формулу или синтаксис сложным. Но мы надеемся, что то, как мы попытались проиллюстрировать формулы, разбив внутренние функции, помогло вам понять синтаксис с некоторым комфортом и легкостью.

Если вы найдете другие функции или формулы, которые мы должны были добавить сюда, то, пожалуйста, сообщите нам об этом в своих ценных комментариях. Вы также можете просмотреть наши более информативные и интересные статьи, связанные с функциями Excel на этом сайте.

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.