Отделить конкретные значения от значения ячейки в Excel? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть лист Excel со значениями, показанными ниже:

sheet1

Я пытаюсь разделить числовые значения, указанные в первом столбце, настолбцы a, b и c , поэтому итоговый результат должен выглядеть следующим образом:

ss

Теперь яможно получить значение в столбце по формуле

=LEFT(A1,FIND("x",A1)-1)

Но я изо всех сил пытаюсь получить другие значения (столбец b и c )

Любая помощь будет оценена :) 1028 *

Ответы [ 3 ]

1 голос
/ 28 октября 2019

Чтобы найти b, попробуйте

=--MID(A2,FIND("(",A2)+1,FIND("x",SUBSTITUTE(A2,"x(","[["))-FIND("(",A2)-1)

Логика заключается в том, чтобы использовать функцию НАЙТИ , чтобы найти положение второго x, заменив / заменивсначала x с другим символом [ в моем примере, затем вы узнаете конечную точку значения b.

Снова воспользуйтесь функцией FIND , чтобы найти положение (, тогда вы узнаете начальную точку значения b, разница между ними будет равна длине значения b,

, затем вы можете использовать функцию MID для возврата значения b из строки. Начальная точка функции MID определяется положением (.

Двойной знак минус -- перед формулой используется для преобразования значения в числовое значение. Он работает так же, как функция NUMBERVALUE . Это необязательно, если вам не нужно показывать результат в виде числа.

Чтобы найти c, попробуйте

=--MID(A2,FIND("x",SUBSTITUTE(A2,"x(","[["))+1,FIND(" ",A2)-FIND("x",SUBSTITUTE(A2,"x(","[[")))

логика похожа на предыдущую. Используйте функцию НАЙТИ , чтобы найти позицию пробела " " и найти позицию второй x, разница двух позиций равна длине значения c,

затем используйте функцию MID для возврата значения c из строки. Начальная точка функции MID определяется положением второй x.

Замените A2 на ваш случай.

Demo

1 голос
/ 29 октября 2019

Другой вариант формулы

Предположим, данные находятся в A2:A5

Чтобы найти «a», в B2 формула скопирована:

=LEFT(A2,FIND("x",A2)-1)

Чтобы найти«b», в C2 формула скопирована:

=LOOKUP(9^9,0+MID($A2,FIND("(",$A2)+1,ROW($1:$9)))

Чтобы найти «c», в D2 формула скопирована:

=LOOKUP(9^9,0+MID($A2,FIND("x",$A2,FIND("(",A2))+1,ROW($1:$9)))
1 голос
/ 28 октября 2019

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

  1. Нажмите Alt + F11 , чтобы открытьИнструменты разработчика
  2. Перейдите на Tools > References и отметьте Microsoft VBScript Regular Expression 5.5
  3. Выберите Insert > Module

Введите следующий код:

Function FINDNUMBERS(sInput As String, Optional iIndex As Integer = 0) As String
    Dim regEx As New RegExp
    Dim strPattern As String

    strPattern = "[0-9]+"

    With regEx
        .Global = True
        .Pattern = strPattern
    End With

    Set Matches = regEx.Execute(sInput)

    FINDNUMBERS = Matches(iIndex)
End Function

Затем вы можете вызвать функцию на рабочем листе следующим образом:

=FINDNUMBERS(A1;0)

Где первый параметр - это ячейка, из которой вы хотите получить числа, а второй параметр - это позиция числа. тебе бы хотелось. Введите 0 для первого найденного номера, 1 для второго номера и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...