.png)
나에게는 이와 같은 데이터가 많이 있다. 여기에는 두 개의 열이 있습니다.
하지만 이렇게 보이려면 필요합니다. 행당 하나의 이름, 필요에 따라 이메일을 추가 열로 추가합니다. 각 이름에 대해 알 수 없는 수의 이메일이 있습니다.
수천 개의 행이 있는 거대한 스프레드시트에 대해 이 작업을 수행해야 합니다. 따라서 전치와 같은 것을 사용하여 각각을 수동으로 변환할 수는 없습니다. 대량/배치/자동 솔루션이 필요합니다.
VBA가 존재한다는 것은 알고 있지만 코딩 방법을 모르겠습니다. 그것이 해결책이라면 코드가 어떻게 생겼는지에 대한 방향을 알려주시겠습니까?
VBA가 아닌 솔루션도 매우 환영합니다.
답변1
사용밀러이 CSV부터 시작합니다.
Name,Email
bob,[email protected]
bob,[email protected]
bob,[email protected]
sally,[email protected]
sally,[email protected]
당신은 실행할 수 있습니다 :
mlr --csv nest --ivar ";" -f Email then nest --explode --values --across-fields -f Email then unsparsify input.csv >output.csv
얻기 위해:
답변2
예제 A열: 이름, B열: 이메일로 시작합니다.
=INDEX($A$2:$A$6, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0))
예를 들어 빈 셀(예: D2)에 다음 배열 수식을 입력 하고 Shift + Ctrl + Enter 키를 함께 눌러 올바른 결과를 얻으세요. 스크린샷을 참조하세요.
- 셀을 아래로 드래그하여 D열의 모든 값을 채웁니다. 결과는 위 스크린샷과 같습니다.
- 셀 내E2이메일을 보낼 곳에 이 공식을 삽입하세요
=IFERROR(INDEX($B$2:$B$16, MATCH(0,COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2,1,0),0)),"")
- 셀을 오른쪽으로 5~10개 셀(또는 생각하는 양만큼) 드래그하여 입력한 다음 행을 아래로 드래그하여 각 사람의 이메일을 입력합니다.
답변3
답변4
새 Excel 버전이 있는 경우 다음 수식을 사용할 수 있습니다.
그러면 다음과 같이 할 수 있습니다.
파란색테이블 이름이 지정됨
Table1
.
사용된 수식:
- E3:
=UNIQUE(Table1[Name])
- F2:N2:
="Mail"&COLUMN()-COLUMN($E$2)
- F3(아래로 늘림):
=INDEX(Table1[Mail];FILTER(TRANSPOSE(SORT(UNIQUE((ROW(Table1[Name])-ROW(Table1[[#Headers];[Name]]))*($E3=Table1[Name]))));TRANSPOSE(SORT(UNIQUE((ROW(Table1[Name])-ROW(Table1[[#Headers];[Name]]))*($E3=Table1[Name]))))>0;""))
테이블은 새 Excel 버전의 SPILL 기능으로 채워집니다.
예시 파일:https://1drv.ms/x/s!ArVkYVSHnABFiiqzBYLPmoubvdHY?e=p7wOeF
이전 Excel 버전을 사용하는 경우 배열 함수를 사용하여 대부분의 기능을 에뮬레이트할 수 있습니다. 하지만 훨씬 더 혼란스러워집니다 ...