
В моей электронной таблице есть ячейки, в которых содержится несколько дат, разделенных точкой с запятой ;
.
После некоторого гугления я обнаружил, что это, TEXTSPLIT
вероятно, лучшая формула для разбиения, но она выдает несколько столбцов данных. Я надеюсь сравнить значения в ячейке до того, как они будут разбиты, и вернуть одно значение, которое будет наибольшим в группе.
Возможно ли это? Одна вещь, о которой я только что подумал, это немного запутанная машина, которая выводит значения на отдельный лист и еще одна формула, которая берет максимальное значение из этих строк. Хотелось бы избежать использования нескольких листов, если это возможно.
решение1
Если я правильно понял, то должна работать следующая формула:
- Формула, используемая в ячейкеB1
=MAX(--TEXTSPLIT(A1,"; "))
Или использовать BYROW()
для получения всех выходных данных за один раз, без заполнения!
=BYROW(A1:A3,LAMBDA(α, MAX(--TEXTSPLIT(α,"; "))))
Приведенная выше формула также работает с имеющимися образцами данных, и вот пример демонстрации.
Пояснения:
- Использование
TEXTSPLIT()
функции: помогает разделить строки по разделителюsemi-colon with a space
-->;
по столбцам. (Пожалуйста, ознакомьтесь с.gif
показанным здесь).
Так как это функция, которая относится к библиотеке функцийТекстследовательно, можно понять, что при его использовании строки дат будут разделены как текст, что создаст проблему для будущих манипуляций с данными, (Примечание: В Excel даты и время хранятся в виде чисел, поэтому целая часть представляет собой дату, а десятичная — время для даты.)
Следовательно, как упоминалось в OP, пользователь, использующий DATEVALUE()
его, может преобразовать его в истинные даты или с помощью double unary
или путем сложения, 0
или путем умножения на 1
или деления на 1
, что в конечном итоге преобразуется.
- После того, как вышеизложенное сделано, мы можем обернуть это в
MAX()
функцию для возвратапоследний/самый большой/максимальный/самый высокий(как бы это ни звучало) дата.
Причины:
Почему пользователь получал 0
при использовании предоставленной мной формулы, в то время как он получал соответствующий вывод при использовании DATEVALUE()
, чтобы объяснить, скриншот поясняет это.
- Пользователь использовал в качестве разделителя только точку с запятой,
;
тогда как я использовал точку с запятой и пробел.;
- Итак, когда при обертывании
MAX()
в двойном унарном он возвращал ошибку, так как он только преобразовывал первый в число, а второй возвращал ошибку, так как имел начальный пробел. Но тот, который с разделителем точкой с запятой и пробелом, должен работать, см. скриншоты.
- Используя
DATEVALUE()
функцию, он заботится о ведущем пробеле и преобразует его в число, а затем, заключив в него,MAX()
получает желаемый результат. Альтернативные способы, были упомянуты в начале с использованием;
, и другой способ справиться с этим — с использованиемTRIM()
=MAX(--TRIM(TEXTSPLIT(A3,";")))
решение2
Я не пробовалответ предоставлен @MayukhBhattacharya, но я ценю предоставленную информацию, поэтому я дал ответ этому пользователю.
Я определил, что ответы необходимо изменить на DateValue, поэтому я вставил формулу DATEVALUE между формулами MAX и TEXTSPLIT.
Формула, которую я использовал, была следующей:
=MAX(DATEVALUE(TEXTSLIT(A2, ";")))
Смотрите пример ниже:
Обязательно отформатируйте ячейку, используя поле краткой даты.