В моем листе Excel у меня есть столбец, который получает транспонированные данные из строки другого листа.
=TRANSPOSE(DATA!L170:CC170)
Примером данных ячейки является 0/300
, и они одинаковы во всем столбце.
Теперь я планирую иметь 2 новых столбца рядом с первым столбцом, чтобы показывать числа отдельно:
| 0/300 | 0 | 300 |
Я хочу, чтобы 2 столбца отображали свои значения, как только в первом столбце появятся данные.
Сначала я хотел попробовать встроенную функцию преобразования текста в столбец. Но, по-видимому, это не работает, потому что обнаруживает только формулу, а не значение.
Есть ли другая формула, которая может делать то, что я хочу? Макрос, безусловно, сработает, но я также ищу более простой метод, если он есть.
Это может быть довольно трудно достичь. Я думаю, невозможно.
Почему? Потому что функция ТРАНСПОЗИРОВАТЬ возвращает диапазон очень точного размера, без места для добавления новых столбцов внутри.
Обходной путь:
Добавьте дополнительные столбцы справа, за концом диапазона. Просто используйте функции ОСТАЛОСЬ/СРЕДНЯЯ/ПРАВИЛЬНО, чтобы получить фрагменты из исходного текста.
Обходной путь будет работать, если размер диапазона не изменится, и если содержимое всегда будет одинаковым в одних и тех же позициях. Если вам нужна (высоко) адаптивная формула, вам нужно будет перейти в VBA для Excel, и это будет «уродливее».
Редактировать: я принял это как должное, но у @МитчеллДин есть хороший момент:
Note that you can use FIND in your left functions in case of different sizes of inputs: =LEFT(A1,(FIND("/",A1,1)-1)). Such as 0/300, 0/3000, 30/30000
Есть два метода, которые вы можете попробовать:
Способ 1
Формула для столбца А:
=IFERROR(LEFT(A1,FIND("/",A1)-1),"")
Формула для столбца B:
=IFERROR(MID(A1,FIND("/",A1)+1,LEN(A1)-FIND("/",A1)),"")
Результаты:
Способ 2
Результаты:
Только что понял, что эта формула не работает для Excel 2003. Есть ли другая формула, которую я могу использовать для этого?
какая у тебя проблема?
#СТОИМОСТЬ! это то, что у меня есть для данных.
Получаете ли вы тот же результат с другими версиями Excel?
Сейчас у меня есть только 2010 (то, что я использую для разработки) и 2003 (пользователь, который использует файл).
так в 2010 работает, а в 2003 нет? в 2016 и 2019 годах работает отлично.
Возможно ли, что формула не поддерживается в 2003 году?
Итак, поискав в Интернете, я обнаружил, что «ЕСЛИОШИБКА» несовместим с Excel 2003. В итоге я использовал обходной путь: 1) =IF(ISERROR(LEFT(I1,FIND("/",I1)-1)),"", (LEFT(I1,FIND("/",I1)-1)))
для левого числа 2) =IF(ISERROR(MID(I1,FIND("/",I1)+1,LEN(I1)-FIND("/",I1))), "", (MID(I1,FIND("/",I1)+1,LEN(I1)-FIND("/",I1))))
для правого числа.
Давайте продолжить обсуждение в чате.
Обратите внимание, что вы можете использовать НАЙТИ в своих левых функциях в случае разных размеров входных данных: =ЛЕВЫЙ(A1,(НАЙТИ("/",A1,1)-1)). Например, 0/300, 0/3000, 30/30000