Мне нужна формула, выполняющая определенную математическую операцию, но только с числом, удовлетворяющим определенным условиям. В данном случае – с числами, извлеченными из строк с определенным текстом в них.
В первом столбце у нас есть необработанные данные: строка с разными числами и текст, разделенный символом подчеркивания. Мне нужно разбить эти данные на несколько разных строк и использовать для этого следующую формулу: =ТРАНСП(РАЗДЕЛИТЬ(A3,"_"))
Следующий столбец должен содержать только числа, но проблема в том, что одно из этих чисел (которое в данном конкретном примере содержит «tb») должно быть разделено или умножено на определенное число (в данном случае умножено на 1000).
Я пробовал следующую формулу, которая работает только до тех пор, пока нет "tb" или если она находится в самом начале строки: =IF(REGEXMATCH(A6,"tb"),REGEXEXTRACT(A6,"(\d+ )tb")*1000,REGEXEXTRACT(B6,"(\d+)"))
Если оно находится где-то в середине или в конце строки, только первое число по-прежнему подвергается математической операции. Интересно, есть ли способ добиться желаемого результата, не прибегая к сложным формулам (я очень новичок в этом и в идеале хотел бы использовать формулы, которые я могу понять и легко модифицировать для других подобных задач). Примерную таблицу для лучшей визуализации можно увидеть ниже. Заранее спасибо!
Нет, это был просто пример, никакой логики. :) Я просто хочу извлечь все числа, как они есть, из большинства строк и умножить (разделить и т. д.) на те, которые содержат определенный текст - не нужно суммировать их с другими числами.
вот электронная таблица, созданная специально для этого вопроса, вставьте некоторые реальные данные и ожидаемый результат, и, возможно, люди смогут помочь легче. docs.google.com/spreadsheets/d/…
Приведите реальный пример и проверьте столбец «Желаемый результат». Похоже, только последняя 2tb
строка превращается в 2000? А как насчет 5tb
в первом? Я думал, что вы просто хотите умножить ТБ на 1000, но это не отразилось на вашем результате. Если вы посмотрите этот снимок экрана, вы увидите, что, исправив ссылку в последнем regexextract
, вы получите желаемый результат tb=1000
, но я не уверен, является ли это вашим настоящим намерением или как на самом деле выглядит ваша таблица. .
@ Даниэль, ой, мой плохой, и спасибо, что указали на это! В моей таблице примеров действительно есть ошибка (уже исправлена). И да, я попробовал ваши предложения, и это сработало как шарм, большое спасибо!
Попробуйте не помещать tb
в первый REGEXEXTRACT:
=IF(REGEXMATCH(A6,"tb"),REGEXEXTRACT(A6,"(\d+)")*1000,REGEXEXTRACT(B6,"(\d+)"))
РЕДАКТИРОВАТЬ
Вариант 2: извлечь числа, стоящие перед "tb"
=IF(REGEXMATCH(A6,"tb"),REGEXEXTRACT(A6,"(\d+)tb")*1000,REGEXEXTRACT(B6,"(\d+)"))
У меня работает точно так же - нет проблем, если «tb» идет первым, но не работает должным образом, например, если оно где-то посередине (вместо этого умножается первое число и не умножается значение с текстом «tb» ).
Вероятно, REGEXMATCH не работает. Если он возвращает значение без умножения, вероятно, потому, что REGEXMATCH возвращает False. Попробуйте загрузить реалистичный образец
@Oldy, посмотри на редактирование, чтобы увидеть, работает ли оно для тебя.
спасибо! Это не сработало, когда я просто скопировал и вставил его, но затем я проверил формулу, предложенную Даниэлем, и она сработала как по маслу. Это в основном то же самое решение, которое вы предложили, просто нужно немного его скорректировать - должно быть так для этой конкретной строки: =IF(REGEXMATCH(B6,"tb"),REGEXEXTRACT(B6,"(\d+)tb")*1000 ,REGEXEXTRACT(B6,"(\d+)")) Ваши ответы тоже очень помогли, большое спасибо!
Да, вы были правы, я попробовал это в другой ячейке в своей электронной таблице, и результат не изменился. Я рад, что вы смогли разобраться!
актуален вопрос «превратить текстовую строку в общее количество мегабайт»?