항목 이미지를 참조하기 위해 스프레드 시트에 2000개의 줄이 있고 파일 경로를 제거해야 하지만 일부 필드에는 한 셀에 여러 이미지 참조가 있으므로 복잡한 예를 들면 다음과 같습니다.
/2/0/2099-1.jpg,/2/0/2099-2.jpg,/2/0/2099-3.jpg,/m/a/male_headless_mannequin_-_arms_folded.jpg
다음과 같이 보여야 합니다:
2099-1.jpg,2099-2.jpg,2099-3.jpg,male_headless_mannequin_-_arms_folded.jpg
그러나 이미지 참조는 하나만 갖습니다. 예:
/3/1/31-222-007.jpg,
공식:
> =MID(AA2,FIND("*",SUBSTITUTE(AA2,"/","*",LEN(AA2)-LEN(SUBSTITUTE(AA2,"/",""))))+1,LEN(AA2))
jpg가 하나만 있을 때는 잘 작동하지만, 여러 개가 있으면 막힙니다.
감사해요
답변1
의 데이터를 사용하여 A1
다음을 시도해 보세요.
=CONCAT(FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s[substring(., string-length(.) - 3) = '.jpg' or substring(., string-length(.) - 4) = '.jpg,']"))
Excel 2019를 실행하는 경우 이 수식을 CSE해야 합니다. Excel O365가 있는 경우 CSE가 필요하지 않지만 다음을 사용하는 더 짧은 버전도 있습니다 LET()
.
=LET(X,FILTERXML("<t><s>"&SUBSTITUTE(A1,"/","</s><s>")&"</s></t>","//s"),CONCAT(IF(ISNUMBER(FIND(".jpg",X)),X,"")))
관심 있는 분들을 위해,링크아래 댓글에 언급된 Q&A를 참조하세요.
답변2
이 작은 사용자 정의 함수를 시도해 보세요:
Option Explicit
Public Function NoPath(sIn As String) As String
Dim arr, i As Long, v As String, L As Long
Dim j As Long
arr = Split(sIn, ",")
For i = LBound(arr) To UBound(arr)
v = arr(i)
L = Len(v)
For j = L To 1 Step -1
If Mid(v, j, 1) = "/" Then
arr(i) = Mid(v, j + 1)
Exit For
End If
Next j
Next i
NoPath = Join(arr, ",")
End Function
사용자 정의 함수(UDF)는 매우 쉽습니다.설치하다그리고 다음을 사용하세요:
- ALT-F11은 VBE 창을 불러옵니다
- ALT-I ALT-M은 새로운 모듈을 엽니다
- 내용을 붙여넣고 VBE 창을 닫습니다.
통합 문서를 저장하면 UDF도 함께 저장됩니다. 2003 이후 Excel 버전을 사용하는 경우 파일을 .xlsx가 아닌 .xlsm으로 저장해야 합니다.
에게제거하다UDF:
- 위와 같이 VBE 창을 불러옵니다
- 코드를 지워라
- VBE 창을 닫습니다
에게사용Excel의 UDF:
=NoPath(A1)
일반적인 매크로에 대해 자세히 알아보려면 다음을 참조하세요.
http://www.mvps.org/dmcritchie/excel/getstarted.htm
그리고
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
UDF에 대한 자세한 내용은 다음을 참조하세요.
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
이 작업을 수행하려면 매크로를 활성화해야 합니다!