Excel 수식으로 만 문자열에서 날짜를 추출하려고합니다. 아래는 내 데이터 샘플입니다.
Only contains one date 01/05/2021 to this example
Project start date is 01/01/2021 and end date is 31/01/2021
There may multiple date like 1st 01/01/2021 2nd 01/06/2021 and 3rd 31/12/2021
내 컴퓨터 로컬 날짜 형식은 dd/mm/yyyy
. 나는 FILTERXML()
공식으로 그것을 달성하려고 노력했습니다 . 나는 아래 공식을 시도했지만 다른 방법도 거의 시도하지 않았지만 실패했습니다.
=TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[translate(.,'dd/mm/yyyy','')!=.]"))
내 예상 출력은 다음과 같습니다.
순전히 xpath를 사용하려면 dd/mm/yyyy
몇 단계로 패턴을 완전히 검증 할 수 있습니다. 1
=TRANSPOSE(TEXT(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[substring(., 3, 1)= '/'][substring(., 6, 1)= '/'][string-length(translate(., '/' , '')) = 8][translate(., '/' , '')*0=0]"),"dd/mm/e"))
"<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>"
-유효한 XML 구조를 만듭니다.//s
-S- 노드 선택 :
[substring(., 3, 1)= '/']
-세 번째 색인에 슬래시가 있습니다.[substring(., 6, 1)= '/']
-6 번째 색인에 슬래시가 있습니다.[string-length(translate(., '/' , '')) = 8]
-슬래시를 교체 할 때 나머지 노드의 길이는 8입니다.[translate(., '/' , '')*0=0]
-슬래시를 대체 할 때 나머지 노드는 숫자입니다.말할 필요도없이 문자열에 다른 슬래시가 없지만 날짜에있는 슬래시가 있으면 위의 내용을 크게 단순화 할 수 있습니다 1 :
=TRANSPOSE(TEXT(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[contains(., '/')]"),"dd/mm/e"))
Excel에서 "dd / mm / yyyy"를 날짜로 인식하면 단순히 using으로 반환 된 배열 //s
이 이러한 날짜에 해당하는 숫자를 반환합니다. 문자열에 다른 숫자 값이 없으면 Microsoft365 기능 1 을 사용하여 이점을 얻을 수 있습니다 .
=LET(X,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s"),TRANSPOSE(TEXT(FILTER(X,ISNUMBER(X)),"dd/mm/e")))
1 : 참고 내포 제거 할 수 있습니다 TEXT()
에 기능과 세포의 NumberFormat를 dd/mm/e
너무.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다