Логика формулы для извлечения данных конкретных ячеек

Для извлечения первой фигуры, а не второй из выборочных данных

(24M UNLTD + INS 30GB £ 347 + £ 30 S6)

Следующая формула массива использовалась в вопросах Stackoverflow.

{=MID(A1,FIND("£",A1),MIN(IF(ISERROR(MID(MID(A1,FIND("£",A1)+1,999),ROW($1:$999),1)+0),ROW($1:$999),999)))} 

Я попытался проанализировать формулу, представленную на изображении ниже. Я не могу понять логику части

 MIN(IF(ISERROR(MID(MID(A1,FIND("£",A1)+1,999),ROW($1:$999),1)+0),ROW($1:$999),999)) 

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

поэтапно работая по формуле

Попробуйте следующее в качестве стандартной (не массив) формулы,

 =--REPLACE(REPLACE(A2, 1, FIND("£", A2), ""), FIND("+", REPLACE(A2, 1, FIND("£", A2), "")), LEN(A2), "") 

Сначала внутренняя REPLACE(A2, 1, FIND("£", A2), "") стирает все до первого символа £ , то та же самая логика применяется для стирания всего в этом модифицированном тексте с первого + до конца , -- преобразует текст, похожий на внешний вид, на фактическое число.

Формула массива, которую вы предоставили, использует более сложную логику.

  1. FIND("£", A2) + 1 находит начальную точку первого числа после первого символа £ . например, Первый £ – 20- й символ, поэтому он возвращает 21.
  2. MID(A2, FIND("£",A2)+1, 999) извлекает текст, следующий за первым символом £. Текст может выглядеть так, как будто он начинается с числа, но текст маскируется как число. например, 347 + £ 30 S6
  3. В формуле массива ROW($1:$999) обрабатывает как последовательность чисел от 1 до 999, увеличивая на 1 для каждого цикла вычисления.
  4. MID(MID(A1, FIND("£", A1) + 1, 999), ROW($1:$999), 1) + 0) возвращает массив текстовых значений, каждый длиной 1 символ и 1 позицию глубже в чем предыдущий. например, 3 , 4 , 7 , + , £ и т. д.
  5. +0 используется для преобразования каждого из этих фрагментов текста в число. Функция IFERROR возвращает TRUE, если часть текста не может быть преобразована в истинное число. Первый, который не может быть превращен в истинное число, – это 4- й пример +
  6. IF улавливает TRUE на четвертой позиции и возвращает 4 из второго ROW($1:$999) . Он вернул 999 для позиций 1, 2 и 3. Например, 999, 999, 999, 4, 5 и т. Д.
  7. MIN захватывает наименьшее из этих чисел, возвращаемое как массив. Вот откуда исходит 4 . например 999, 999, 999, 4, 5, 999, ...

Вы сами это видите, изменив все 999 на 9, затем используя команду Evaluate Formula . Важна причина, по которой изменяется значение 9, так что возвращаемые массивы числа выглядят как 1, 2, 3, 4, 5, 6, 7, 8, 9, что не слишком сильно искажает результаты как 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, … 998, 999 .

evaluate_formula
Это показывает, что формула оценивает несколько этапов процесса. Обратите внимание, что 4 возвращается в функцию MIN .

  • Как связать листы в excel, чтобы вставлять новые строки
  • Как подсчитать записи, соответствующие нескольким критериям
  • Формула преобразования времени Excel
  • Показывать пользовательский ввод и расчетный ввод в одной ячейке
  • Как выбрать дату из Excel
  • Как получить данные из другого листа, используя дату
  • Формула Excel для перекрестной ссылки 2 листа, удалите дубликаты с одного листа
  • Excel COUNTIFS со смешанными датами и логическими
  • Формула Excel вытащить данные из последних 5 строк диапазона ячеек, в которые добавлены новые строки ежедневно
  • Считайте отличные, точные значения строк в Excel
  • Формирование формулы excel с использованием вложенных операторов if
  • Interesting Posts

    Переименование ячеек в Excel

    Вставить специальную ошибку – 1004 VBA Excel

    excel Как подсчитать количество строк, содержащих данные?

    Получение данных с веб-сайта HTML с помощью VBA – FREEMAPTOOLS.COM

    excel error 91 при добавлении элемента в С … End With

    Python: открыть книгу Excel с помощью Win32 COM Api

    Вложенный словарь в VBA: ошибка 457: этот ключ уже связан с элементом коллекции

    Ошибка времени выполнения «1004» при применении автоматического фильтра на скрытом листе

    Создайте новый лист для каждой ячейки диапазона и переименуйте его значение

    Удаление дубликатов с учетом значения строки VBA

    VBA не может открыть excel (слишком много разных форматов ячеек).

    Powershell поиск Excel документ для точного соответствия

    Стиль шрифта для тела электронной почты в VBA

    Excel Расширенный Фильтровать самую последнюю дату

    102 файла копируют одинаковый диапазон от каждого до одного листа

    Давайте будем гением компьютера.