Excel에서 동일한 셀에서 쉼표로 구분 된 값 (CSV가 아닌 문자 그대로), 개별 셀에 넣습니다


3

나는 메일을 포함하는 Excel의 셀 열을 가지고 있으며, 일부는 메일을 하나만 포함하고 다른 일부는이 형식으로 셀 당 하나 이상의 이메일을 가지고 있습니다.

one@example.com, two@example.com, three@example.com

내가 달성하고자하는 것은 다음과 같이 얻는 것입니다.

one@example.com
two@example.com
three@example.com

나는 추측합니다 (내 말을하지 마십시오) 당신은 라인의 일부 if 문을 할 수 있습니다

if (cell contains ", ")
get string from ", " to ", " and paste somehow
else "b1"

당신은 지금 화면에서 비명을 지르고있을 수도 있습니다 :) (또는 웃음) 그러나 그것은 어떻게 접근 할 것인지, 기능을 사용할 수 없거나 전혀 불가능한 방법입니다.

아이디어가 있으시면 감사하겠습니다 !!

경우에 따라이 파일에서 csv를 수행하고 싶습니다.

미리 감사드립니다!

트루 파

BTW 설명을 요청하지 않으면 문제를 명확하게 설명했으면합니다.

편집 : 문제는 실제로 해결되고, 내가 포기하고 하나씩 실패했습니다. :) 미래와 지식을 위해 어쨌든 어떤 아이디어라도 감사합니다!

답변:


4

Excel 내에서 데이터-> 텍스트를 열로 시도하십시오.

그런 다음 구분 기호로 ","를 선택하십시오. 이렇게하면 쉼표가있는 곳에 열이 나옵니다.


나는 그것을 할 방법을 찾아야한다! 어쨌든 내 편집을 참조하십시오 감사합니다 :)
Trufa

0

당신은 단지 CSV로 저장하고 검색하고 대체 할 ,\n있습니까?


따라서 \ n은 CSV 파일에서 유효합니다. 이해할 것입니까?
Trufa

@Trufa : 그렇지 않습니다; \n메모장 ++에서 줄 바꿈을위한 자리 표시 자로 사용 했습니다. 텍스트 편집기에서 검색 및 바꾸기에서 줄 바꿈이 표시되는 내용을 찾아야합니다.
Hello71

나는 그것을 할 방법을 찾아야한다! 어쨌든 내 편집을 참조하십시오 감사합니다 :)
Trufa

0

Excel 파일을 csv로 내 보냅니다.

그것을 리눅스 머신에 복사하고 Vim 편집기에서 편집하십시오.

그런 다음 다음을 입력하십시오.

%s/,/\\n/g

이것은 해당 명령의 분류입니다.

  • : -명령 실행
  • % s- 대체
  • / -구분자
  • , -찾을 문자열
  • / -구분자
  • ****-다음 문자를 무시하는 제어 문자이지만,이 경우 다음 \ n 부분이 쉼표로 대체되는 문자열이됩니다.
  • \ n- 쉼표로 바꿀 문자열
  • / -구분자
  • g- 전 세계적으로

이렇게하면 전역 적으로 쉼표를 찾아 줄 바꿈으로 바꾸고 모든 셀을 새 줄에 넣습니다. 그런 다음이 파일을 Excel로 다시 가져올 수 있습니다.

리눅스를 사용하지 않으면 사과-그것은 내 전문이며 편집기와 문자열 조작 도구는 Windows보다 훨씬 좋습니다.


1
메모장 ++는 정규식 검색 및 바꾸기를 처리하고 Windows에서 실행됩니다. 이런 경우에는 정기적으로 사용합니다.
glallen

0

Stackoverflow 답변에 더 가깝기 때문에 내 대답이 여기에 맞는지 확실하지 않지만 매크로를 작성하여 상당히 쉽게 수행 할 수 있습니다. 예를 들어 다음 매크로는 현재 전자 메일 주소가 첫 번째 열에 있다고 가정하고 두 번째 열에 복사합니다.

Cells(1, 1).Select
Dim curr As String
Dim cnt As Integer
cnt = 0
For i = 1 To ActiveCell.SpecialCells(xlLastCell).Row
    curr = Cells(i, 1).Value
    If InStr(curr, "@") Then
        If InStr(curr, ",") Then
            Dim tmp() As String
            tmp = Split(curr, ",")
            For j = LBound(tmp) To UBound(tmp)
                cnt = cnt + 1
                Cells(cnt, 2).Value = tmp(j)
            Next
        Else
            cnt = cnt + 1
            Cells(cnt, 2).Value = curr
        End If
    End If
Next i

나는 VBA를 많이 알지 못하므로 더 좋은 방법 일 수 있습니다.


0

따라서 쉼표 대신 줄 바꿈을 원하면 찾아서 char (10)으로 바꿔야합니다. 이 공식을 사용해보십시오.

= SUBSTITUTE (A2, ",", CHAR (10))

수식은 A2의 텍스트에서 쉼표를 바꾸고 줄 바꿈으로 바꿉니다.

예 : A2에 다음이 포함 된 경우 :

someone @ gmail.com, somebody @ yahoo.com

그러면 다음과 같이 반환됩니다.

someone@gmail.com
somebody@yahoo.com

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.