데이터가 가득 찬 열이 있는데 10개 또는 20개 행 후에 새 행을 반복해야 하는 특정 패턴이 없습니다. 따라서 이러한 인덱스 및 오프셋 솔루션은 수식이 각 섹션의 시작과 끝을 정의할 수 있는 경우에만 작동할 수 있습니다.
올바르게 이해하기 위해 다음과 같은 열이 있습니다.
A
B
C
D
- (섹션이 끊어짐)
A
C
E
F
G
- (다른 행이 끊어짐)
B
C
F
G
- (다시 끊어짐)
따라서 모든 "-" 문자가 테이블에서 새 줄을 시작하면 괜찮을 것입니다. 수식이나 VBA를 사용하여 Excel이나 Access에서 수행할 수 있습니까?
감사합니다!
답변1
사용:
=FILTERXML("<Group><Element>"&SUBSTITUTE(TEXTJOIN("",FALSE,A1:A15),"-","</Element><Element>")&"</Element></Group>","/Group/Element")
이는 TEXTJOIN()
열의 모든 값(수식에서 A1:A15)을 조인하는 데 사용됩니다. 끝 셀로 "-"가 없다고 가정하며 마지막 항목 위의 셀을 끝으로 선택하기만 하면 됩니다. range로 끝나는 경우 "-" 문자가 항상 나타납니다.) 비어 있어도 셀을 건너뛰지 않지만, 빈 셀을 건너뛰어야 하는 경우 TRUE
함수의 두 번째 매개 변수로 사용합니다.
그런 다음 "-" 문자로 부분으로 나누어진 단일 요소 배열을 동일한 문자열로 변환 TEXTJOIN()
하지만 "-" 문자 대신 ""를 사용합니다. 이는 FILTERXML()
표시된 함수 에서 문자열을 부분적으로 사용할 수 있도록 준비하는 것입니다 . 대체 항목은 모두 문자열 내부에 있습니다. 즉, 양쪽 끝이 아닌 내부에만 나타납니다. HTML에 조금이라도 익숙하다면 "</tag name>" 형식이 태그를 닫고 ""가 태그를 여는 것을 아실 것입니다.
그런 다음 시작 부분에 여는 태그를 추가하고(발생하기 전에 추가 SUBSTITUTE()
) 닫는 태그가 끝에 추가됩니다. 따라서 "-" 문자를 사용하여 분리한 원하는 그룹 각각 주위에 여는 태그 쌍과 닫는 태그 쌍이 있습니다.
마지막으로, 개별적으로 태그가 지정된 모든 요소(태그 이름 ""을 어디서 얻었는지 확인하세요)를 단일 그룹으로 그룹화해야 합니다(태그가 어디서 왔는지 확인하세요).
FILTERXML()
이제 이해하고 조각으로 나눌 수 있는 HTML 문자열이 생겼습니다 . 첫 번째 매개변수에 해당 문자열을 사용하고 두 번째 매개변수에 대해 "경로"라고 불리는 것을 통해 태그가 어떻게 관련되어 있는지 알려줍니다. 즉 끝에 있는 "/그룹/요소" 비트입니다.
그러한 문자열이 특정 방식으로 매우 명확하게 구성되어 있는데 왜 Excel 세트가 필요한지 이해하기 어렵습니다. 그렇죠? 그러나 이는 "평범한" 문자열을 분리하는 것이 아니라 실제 라이브 HTML을 라이브 웹사이트에서 분리하기 위한 것이며 그러한 HTML 문자열에는 다른 태그가 많이 있을 수 있으므로 그렇게 명확하지 않을 것입니다! 하지만 흥미롭게도 여러 태그를 사용하여 문자열을 만든 경우 Excel에서 다른 경로 값을 사용하여 동일한 문자열에서 다른 집합을 가져오도록 할 수 있습니다.
어쨌든 FILTERXML()
결과를 세로 레이아웃, 한 열에 행으로 제공하는 것을 좋아합니다. 나는 당신이 이것을 선호할 것이라고 믿습니다[예, 귀하가 명시적으로 행을 요청한 댓글에서 확인했습니다.]하지만 그렇지 않은 경우 가로 레이아웃, 한 행의 열을 원한다면 모든 것을 함수로 감싸면 됩니다 TRANSPOSE()
.
또 다른 흥미로운 용도는 FILTERXML()
숫자(1, 2, 3 등)와 마지막 요소(알고 있는 경우) 또는 "마지막"을 기준으로 원하는 그룹의 요소를 정확하게 지정할 수 있다는 것입니다. 편리할 수 있습니다.
내부 태그 쌍()을 올바른 위치에 삽입하는 작업 방법이 있으면 문자열을 사용하여 더 넓은 범위의 작업을 수행할 수 있습니다.