Мне нужна формула, которая может умножать или делить все числа в строке без изменения текста, прикрепленного к числам.
Мне нужно, чтобы числа в следующем столбце автоматически менялись в соответствии с заданной математической операцией, но текст из исходной строки должен оставаться неизменным.
Я пробовал использовать комбинацию REGEXMATCH и REGEXEXTRACT, и, делая это, я просто получаю результат умножения/деления всех чисел в строке (без текста).
У меня также не получилось использовать REGEXREPLACE. Я даже не уверен, что мы действительно можем использовать его в этом случае, и, возможно, вместо этого мне нужна другая формула. Может быть, вам сначала нужно извлечь числа, умножить их и использовать что-то вроде TEXTJOIN или CONCATENATE, чтобы объединить их в строку с уже измененными значениями, и возможно ли это вообще в этом конкретном примере? Совершенно нормально выполнять операцию в несколько шагов, если это необходимо (например, добавить функцию SPLIT или что-то в этом роде), но формат исходных данных, которые нам нужно ввести и пересчитать, к сожалению, нельзя изменить.
Примерную таблицу для лучшей визуализации можно увидеть ниже. Любая помощь будет принята с благодарностью!
Вы можете попробовать:
=byrow(index(bycol(split(A2:A,"/"),lambda(z,ifna(ifs(left(B2:B,1) = "*",regexextract(z,"\d+")*mid(B2:B,2,99),left(B2:B,1) = "/",round(regexextract(z,"\d+")/mid(B2:B,2,99),2))®exextract(z,"\d+(.*)"))))),lambda(y,if (y = "",,join("/",y))))
В вашем случае, как мы собираемся предоставить эти значения столбца B в формулу для расчетной части?
Идея в том, что расчеты должны работать с любыми значениями, которые можно было задать прямо в формуле. Но просто чтобы проверить, работает ли это, мы можем использовать значения из оригинального поста: B2 = A2 * 0,25, B3 = A3 * 0,75 и т. д.
хорошо, если мы жестко закодируем значения непосредственно в формулу; вы можете попробовать это для строки 2 в примере данных =join("/",bycol(split(A2,"/"),lambda(z,regexextract(z,"\d+")*0.25®exextract(z,"\d+(.*)"))))
Очень извиняюсь за еще один вопрос, а есть ли еще способ модифицировать формулу, чтобы результат умножения при необходимости округлялся на заданный параметр, например до ближайших 10 через ОКРУГЛ или подобную функцию ? Я пытался сделать это сам, но, похоже, я не смог найти правильный порядок и получил следующую ошибку: «Параметр 1 функции ОКРУЖЕНИЕ ожидает числовые значения. Но «х» — это текст, и его нельзя привести к числу. " или какие-то ошибки, связанные с самой функцией LAMBDA.
это: =join("/",bycol(split(A2,"/"),lambda(z,mround(regexextract(z,"\d+")*0.25,10)®exextract(z,"\d+(.*)"))))
Круто, спасибо за помощь! Эта формула работает как шарм!
Большое спасибо, это сработало! У меня есть еще один вопрос. Я должен был упомянуть об этом в исходном сообщении, поэтому я уже принял предложенное решение, но мне интересно, есть ли простой способ выполнить операцию только в одной ячейке (в данном случае без столбца B)? как на этой картинке