![쉼표가 없는 단일 셀의 숫자를 어떻게 나누어 여러 행에 넣을 수 있나요?](https://rvso.com/image/1452247/%EC%89%BC%ED%91%9C%EA%B0%80%20%EC%97%86%EB%8A%94%20%EB%8B%A8%EC%9D%BC%20%EC%85%80%EC%9D%98%20%EC%88%AB%EC%9E%90%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%82%98%EB%88%84%EC%96%B4%20%EC%97%AC%EB%9F%AC%20%ED%96%89%EC%97%90%20%EB%84%A3%EC%9D%84%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
그래서 제가 하려는 일은 다음과 같습니다. 일련의 숫자가 포함된 셀이 있는 스프레드시트가 있습니다(일부는 다른 것보다 깁니다). 8개의 숫자를 모두 추출하여 단일 행에 넣어야 합니다.
현재 스프레드시트의 모습은 다음과 같습니다.
IFIELD1 IFIELD2 IFIELD3 IFIELD4 IMAGELIST
05/30/2009 ERMS 100 Day L. C. 0000001200000013
05/30/2009 ESE 20 Day J. R. 0000001400000015
05/30/2009 IHS 100 Day H. W. 00000016
05/30/2009 LMS 100 Day D. E. 0000001700000018
이것이 내가 얻고자 하는 것입니다:
IFIELD1 IFIELD2 IFIELD3 IFIELD4 IMAGELIST
05/30/2009 ERMS 100 Day L. C. 00000012
05/30/2009 ERMS 100 Day L. C. 00000013
05/30/2009 ESE 20 Day J. R. 00000014
05/30/2009 ESE 20 Day J. R. 00000015
05/30/2009 IHS 100 Day H. W. 00000016
05/30/2009 LMS 100 Day D. E. 00000017
05/30/2009 LMS 100 Day D. E. 00000018
일부 세트 오프 번호는 한 줄에 8개씩 30개 이상의 그룹으로 구성됩니다. 1000개 이상의 행이 넘는 데이터를 분리할 수 있습니다. 이 프로세스를 덜 힘들게 만드는 데 도움이 되는 코드 유형이 있습니까? 현재 왼쪽, 중간, 오른쪽을 사용하고 있지만 완료하는 데 몇 년이 걸릴 것입니다. 워크시트에 액세스할 수 없게 되므로 더 쉽게 완료할 수 있는 방법이 있으면 제안을 받습니다. 최종 제품은 csv로 저장되어야 합니다. 또한 해당 이미지가 있는 위치에 대한 링크를 만들 수 있도록 csv로 저장하기 전에 완성된 제품의 8자리 전체를 유지해야 합니다. 도와주셔서 감사합니다!
답변1
Access에는 매우 쉬운 솔루션이 있습니다.
- 숫자 목록에 불과한 테이블을 만듭니다. 에 포함될 항목의 최대 개수는
1, 2, 3, 4, ... n
어디에 있습니까 ? 하지만 필요한 것보다 더 크게 만드는 것은 비용이 많이 들지 않으므로 최대 50개 정도까지 가십시오.n
IMAGELIST
- 원본 테이블과 숫자 테이블을 가져오는 쿼리를 만듭니다.조인 없이. 이 시점에서 수행했다면 원본 테이블에 있는 모든 레코드의 복사본을
SELECT *
얻게 됩니다 .n
- 필드 를 가져오는 대신 숫자 테이블의 값을 기반으로 필드 에서 기능을
IMAGELIST
수행하는 수식을 추가하세요 .MID
IMAGELIST
- 수식이 빈 문자열을 반환하지 않는 레코드만 표시하도록 필터링합니다. 즉, 24자 길이의 레코드는 빈 레코드가 여러 번 표시되는
IMAGELIST
대신 3번만 표시된다는 의미입니다.n
해당 쿼리에 대한 SQL은 다음과 같습니다.
SELECT Table1.ID, Table1.IFIELD1, Table1.IFIELD2, Table1.IFIELD3, Table1.IFIELD4, Table2.Number, Mid([IMAGELIST],([Number]-1)*8+1,8) AS ImageListParse
FROM Table1, Table2
WHERE Mid([IMAGELIST],([Number]-1)*8+1,8)<>""
ORDER BY Table1.ID, Table2.Number;
내 빠른 모형에는 Table1
원본 테이블이 있고 Table2
숫자 테이블이 있으며 Number
유일한 필드 Table2
이고 숫자 1-n만 있고 정렬을 위해 자동 번호 필드를 추가 ID
했습니다 Table1
.
이는 모든 항목이 IMAGELIST
정확히 8자라고 가정합니다. 길이가 다양하다면 이 접근 방식은 작동하지 않습니다.
답변2
Excel 워크시트 기능을 사용하면 이 작업이 크게 어렵지 않습니다. 데이터가 Sheet1
행 1의 헤더와 함께 있다고 가정해 보겠습니다 Sheet2
. 다음과 같이 입력하세요.
A1
→=Sheet1!A1
- 모든 열을 덮기 위해 오른쪽으로 드래그합니다(즉,
E
5개 열의 예를 기준으로 Column 을 통해). - 또는 헤더를 에서 으로 복사하면
Sheet1
됩니다Sheet2
.
- 모든 열을 덮기 위해 오른쪽으로 드래그합니다(즉,
A2
→=OFFSET(Sheet1!A$1, $F2-1, 0)
- 모든 열을 덮으려면 오른쪽으로 드래그하세요.제외하고
IMAGELIST
(즉, Column 을 통해D
). Sheet2
어떤 시점에서는 열(예: 날짜가 포함된 열)의 형식을 올바르게 지정하고 싶을 것입니다 .
- 모든 열을 덮으려면 오른쪽으로 드래그하세요.제외하고
E2
→=LEFT($G2, 8)
F2
→2
G2
→=OFFSET(Sheet1!E$1, $F2-1, 0)
- ( , Column 을 참조하는 것을 제외하면 Columns
A
- 의 수식과 동일합니다 .)D
Sheet1
E
- ( , Column 을 참조하는 것을 제외하면 Columns
H2
→=RIGHT($G2, LEN($G2)-8)
행 2를 행 3으로 드래그/채우세요. 그런 다음 변경하세요.
F3
에=IF(H2<>"", F2, F2+1)
, 그리고G3
에게=IF(H2<>"", H2, OFFSET(Sheet1!E$1, $F3-1, 0))
이제 다음에서 모든 데이터를 가져오는 데 필요한 만큼의 행에 대해 행 3을 아래로 끌어서 채웁니다 Sheet1
.
그런 다음 값과 형식을 복사하여 붙여넣습니다.
설명:
- 열은
F
어느 행에 있는지 나타냅니다.Sheet1
이것행(Sheet2
)에서 데이터를 가져옵니다. - 새 행으로 이동할 때마다
Sheet1
(즉, 열이 증가할 때마다F
) 열은G
완전한 8×를 얻습니다.N- 의 숫자 길이IMAGELIST
값Sheet1
. - Column의 값은
G
분할됩니다. 처음 8자리는 Column으로E
, 나머지는 Column으로 나뉩니다H
. - Column에 비어 있지 않은 나머지가 있는 한
H
이를 Column에 복사G
하고 Column을F
동일하게 둡니다(즉, 에서 동일한 행에 액세스Sheet1
). - Column의 데이터가 부족하다는 것은
H
8×를 분해했다는 의미입니다.N- 부터 자릿수 길이의IMAGELIST
값Sheet1
N행을 증가시키므로Sheet2
Column을 증가시키고F
다음IMAGELIST
값을 가져옵니다.
답변3
목표를 달성하려면 두 가지 단계를 수행해야 합니다.
1 숫자를 다른 열로 분할합니다. 예를 들어 Excel 2010의 경우: 데이터 - 텍스트를 열로 - 고정 너비 - 너비를 8로 설정한 다음 마침을 클릭합니다.
2 두 번째 단계는 데이터 피벗을 해제하는 것입니다. 불행히도 간단하지는 않지만 인터넷에는 다음과 같은 많은 솔루션이 있습니다.Excel에서 "피벗 해제" 또는 "역 피벗"이 가능합니까?