Programing

Excel에서 특정 텍스트 값을 날짜로 자동 변환하지 못하도록 중지

lottogame 2020. 2. 13. 00:27
반응형

Excel에서 특정 텍스트 값을 날짜로 자동 변환하지 못하도록 중지


누군가가 특정 필드에 대해 내 CSV에 추가 할 수있는 토큰이 있는지 알고 있습니까? 그래서 Excel은 날짜로 변환하려고하지 않습니까?

내 응용 프로그램에서 .csv 파일을 작성하려고하는데 값 중 하나가 Excel에서 자동으로 텍스트를 날짜로 변환하는 날짜처럼 보입니다. 모든 텍스트 필드 (날짜처럼 보이는 필드 포함)를 큰 따옴표 안에 넣으려고했지만 효과가 없습니다.


큰 따옴표 앞에 '='를 넣으면 원하는 것을 얻을 수 있습니다. 데이터를 텍스트로 만듭니다.

예. = "2008-10-03", = "추가 텍스트"

편집 (다른 게시물에 따라) : Jeffiekins가 지적한 Excel 2007 버그 때문에 Andrew가 제안한 솔루션을 사용해야합니다 ."=""2008-10-03"""


나는 이것이 오래된 질문이라는 것을 알고 있지만 문제는 곧 사라지지 않습니다. CSV 파일은 일반 텍스트 편집기를 사용하여 크런치에서 작고 사람이 읽을 수있는 대부분의 프로그래밍 언어에서 쉽게 생성 할 수 있습니다.

문제는 텍스트 필드의 날짜 뿐만 아니라 숫자 도 텍스트에서 숫자로 변환되는 것입니다. 이것이 문제가되는 몇 가지 예 :

  • 우편 번호
  • 전화 번호
  • 정부 ID 번호

때로는 하나 이상의 0으로 시작할 있으며 숫자로 변환하면 버려집니다. 또는 값에 수학 연산자와 혼동 될 수있는 문자가 포함되어 있습니다 (예 : /,-).

앞서 언급 한 것처럼 "prepending ="솔루션 이 이상적이지 않다고 생각할 수있는 두 가지 경우

  • 파일을 MS Excel 이외의 프로그램으로 가져올 수있는 경우 (MS Word의 편지 병합 기능이 떠오름)
  • 인간의 가독성이 중요한 곳.

이 문제를 해결하기위한 해킹

값에 숫자가 아닌 문자 및 / 또는 날짜가 아닌 문자를 사전 / 추가하면 값이 텍스트로 인식되고 변환되지 않습니다. 인쇄되지 않은 문자는 표시된 값을 변경하지 않기 때문에 좋습니다. 그러나 일반 이전 공백 문자 (\ s, ASCII 32)는 Excel에서 잘린 다음 값이 계속 변환되므로 작동하지 않습니다. 그러나 잘 작동하는 다양한 다른 인쇄 및 비 인쇄 공간 문자가 있습니다. 그러나 가장 쉬운 방법 은 간단한 탭 문자 (\ t, ASCII 9)추가 (뒤에 추가)하는 것입니다.

이 방법의 장점 :

  • 키보드 또는 기억하기 쉬운 ASCII 코드 (9)로 제공
  • 수입을 귀찮게하지 않습니다.
  • 일반적으로 편지 병합 결과를 방해하지 않습니다 (템플릿 레이아웃에 따라 다름). 일반적으로 줄 끝에 넓은 공간을 추가합니다. (그러나 이것이 문제가되는 경우 너비가 0 인 공간 (ZWSP, 유니 코드 U + 200B)과 같은 다른 문자를보십시오.
  • 메모장 등에서 CSV를 볼 때 큰 방해가되지는 않습니다.
  • Excel (또는 메모장 등)에서 찾기 / 바꾸기로 제거 할 수 있습니다.
  • CSV 가져올 필요는 없지만 Excel에서 CSV 열려면 두 번 클릭하면 됩니다.

탭을 사용하지 않으려는 이유가있는 경우 유니 코드 테이블에서 다른 것이 있는지 찾아보십시오.

다른 옵션

최신 MS Excel 버전에서 가져 오기 위해 특정 형식을 허용하고 .XLS 형식과 비슷한 옵션을 더 많이 허용하는 XML 파일을 생성하는 것이 될 수 있지만 이에 대한 경험은 없습니다.

다양한 옵션이 있습니다. 요구 사항 / 응용 프로그램에 따라 하나가 다른 것보다 낫습니다.


부가

MS Excel의 최신 버전 (2013+)은 더 이상 스프레드 시트 형식으로 CSV를 열지 않는다고 말해야합니다. 워크 플로에서 속도가 한 번 더 높아져 Excel의 유용성이 떨어집니다 ... 최소한, 그 문제를 해결하기위한 지침이 있습니다. 이 Stackoverflow : Excel 2013에서 .csv 파일을 올바르게 표시하는 방법은 무엇입니까?를 참조하십시오. .


Jarod의 솔루션과 Jeffiekins가 제기 한 문제를 해결하면서 수정할 수 있습니다.

"May 16, 2011"

"=""May 16, 2011"""

비슷한 문제가 있었고 이것은 CSV 파일 내용을 편집하지 않고도 도움이되는 해결 방법입니다.

파일 이름을 ".csv"이외의 다른 이름으로 지정할 수있는 경우 "Myfile.txt"또는 "Myfile.csv.txt"와 같이 ".txt"확장명으로 파일 이름을 지정할 수 있습니다. 그런 다음 끌어서 놓기가 아니라 파일-> 열기 또는 가장 최근에 사용한 파일 목록을 사용하여 Excel에서 열면 Excel에서 "텍스트 가져 오기 마법사"를 제공합니다.

마법사의 첫 페이지에서 파일 유형으로 "구분"을 선택하십시오.

마법사의 두 번째 페이지에서 ","를 구분 기호로 선택하고 값을 따옴표로 묶은 경우 텍스트 한정자를 선택하십시오.

세 번째 페이지에서 모든 열을 개별적으로 선택하고 "일반"대신 "텍스트"유형을 지정하여 Excel이 데이터를 엉망으로 만드는 것을 막으십시오.

이것이 당신이나 비슷한 문제를 가진 누군가를 돕기를 바랍니다!


경고 : Excel '07 (적어도) 버그가 있습니다 : 필드의 내용에 쉼표가 있으면 = "필드, 내용"을 올바르게 구문 분석하지 않지만 쉼표 뒤에있는 모든 것을 인용 부호에 관계없이 다음 필드.

내가 찾은 유일한 해결 방법은 필드 내용에 쉼표가 포함될 때 =를 제거하는 것입니다.

이것은 Excel에서 정확히 "올바른"을 나타내는 것이 불가능한 일부 필드가 있음을 의미하지만, 지금은 아무도 놀라지 않을 것이라고 믿습니다.


C #으로 CSV 파일에 쓸 문자열을 만드는 동안 다음과 같은 형식으로 포맷해야했습니다.

"=\"" + myVariable + "\""

Excel 2010에서 새 시트를 엽니 다. 데이터 리본에서 "텍스트에서 외부 데이터 가져 오기"를 클릭하십시오. CSV 파일을 선택한 다음 "열기"를 클릭하십시오. "다음"을 클릭하십시오. "탭"을 선택 취소하고 "쉼표"옆에 확인 표시를 한 다음 "다음"을 클릭하십시오. 첫 번째 열의 아무 곳이나 클릭하십시오. Shift 키를 누른 상태에서 마지막 열을 클릭 할 수있을 때까지 슬라이더를 가로 질러 끈 다음 Shift 키를 놓습니다. "텍스트"라디오 버튼을 클릭 한 다음 "마침"을 클릭하십시오.

모든 열은 CSV 파일에있는 것처럼 텍스트로 가져옵니다.


MARC1, MARCH1, SEPT1 등과 같은 유전자 이름을 사용하는 사람들에게는 오히려 Microsoft Office 2016 릴리스의 문제가 여전히 문제입니다. R에서 ".csv"파일을 생성 한 후 가장 실용적인 솔루션은 그런 다음 Excel 사용자와 열거 나 공유됩니다.

  1. CSV 파일을 텍스트 (메모장)로 엽니 다
  2. 복사하십시오 (ctrl + a, ctrl + c).
  3. 새로운 엑셀 시트에 붙여 넣으십시오-모두 긴 텍스트 문자열로 한 열에 붙여 넣습니다.
  4. 이 열을 선택 / 선택하십시오.
  5. 데이터- "텍스트를 열로 ..."으로 이동하고 열린 창에서 "구분"(다음)을 선택하십시오. "쉼표"가 표시되어 있는지 확인하십시오 (이미 데이터가 아래 열로 분리되어 표시됨) (다음),이 창에서 원하는 열을 선택하고 텍스트 대신 일반 텍스트로 표시 할 수 있습니다 (마침).

HTH


csv 파일을 처음 생성 할 때 직장에서 사용하는 간단한 방법은 다음과 같습니다. 값이 약간 변경되어 모든 응용 프로그램에 적합하지는 않습니다.

CSV의 모든 값 앞에 공백을 추가하십시오.

이 공간은 "1", "2.3"및 "-2.9e4"와 같은 숫자에서 Excel로 제거되지만 "01/10/1993"과 같은 날짜와 "TRUE"와 같은 부울로 유지되어 엑셀의 내부 데이터 형식.

또한 읽을 때 큰 따옴표가 압축되지 않습니다. 따라서 csv에서 텍스트를 만드는 간단한 방법은 Excel에서 변경되지 않은 채로 유지됩니다. 즉 (작은 따옴표를 사용하여 입력 할 내용을 표시) ' "3.1415"'. 그런 다음 Excel에서 항상 큰 문자열로 묶고 공백이 앞에 붙는 것을 제외하고는 항상 원래 문자열을 갖습니다. 따라서 수식 등의 문자열을 고려해야합니다.


(Excel 2003 가정 ...)

텍스트-열 마법사를 사용하는 경우 3 단계에서 각 열의 데이터 유형을 지정할 수 있습니다. 미리보기에서 열을 클릭하고 오작동 열을 "일반"에서 "텍스트"로 변경하십시오.


이것은 파일 자체를 엉망으로 만들지 않고 이것을 달성하는 방법을 아는 유일한 방법입니다. 평소와 마찬가지로 Excel에서 책상 위에 머리를 몇 시간 동안 두들겨서 배웠습니다.

.csv 파일 확장명을 .txt로 변경하십시오. 이렇게하면 파일을 열 때 Excel에서 파일을 자동 변환하지 않습니다. 방법은 다음과 같습니다. Excel을 빈 워크 시트로 열고 빈 시트를 닫은 다음 File => Open을 열고 .txt 확장자를 가진 파일을 선택하십시오. 이렇게하면 Excel에서 "텍스트 가져 오기 마법사"를 열어 파일 해석 방법에 대한 질문을합니다. 먼저 구분 기호 (쉼표, 탭 등)를 선택한 다음 (중요한 부분) 열 세트를 선택하고 서식을 선택하십시오. 파일에있는 내용을 정확히 원하면 "텍스트"를 선택하면 구분 기호 사이에있는 내용 만 Excel에 표시됩니다.


2018 년

나를 위해 일한 유일한 올바른 솔루션 (및 CSV를 수정하지 않은 ).

엑셀 2010 :

  1. 새 통합 문서 작성
  2. 데이터> 텍스트에서> CSV 파일 선택
  3. 팝업에서 "구분"라디오 버튼을 선택한 다음 "다음>"을 클릭하십시오.
  4. 구분 기호 확인란 : "쉼표"만 선택하고 다른 옵션을 선택 취소 한 다음 "다음>"을 클릭하십시오.
  5. "데이터 미리보기"에서 맨 오른쪽으로 스크롤 한 다음 Shift 키를 누른 상태에서 마지막 열을 클릭하십시오 (모든 열이 선택됨). "열 데이터 형식"에서 "텍스트"라디오 버튼을 선택한 다음 "마침"을 클릭하십시오.

Excel Office365 : (클라이언트 버전)

  1. 새 통합 문서 작성
  2. 데이터> 텍스트 / CSV에서> CSV 파일 선택
  3. 데이터 유형 감지> 감지하지 않음

참고 : Excel office365 (웹 버전)는이 글을 쓰고 있으므로 그렇게 할 수 없습니다.


(EXCEL 2007 이상)

소스 파일을 편집하지 않고 Excel에서 날짜 형식을 "감지"하지 않도록하는 방법

어느 한 쪽:

  • 파일 이름을 .txt로 바꾸십시오
  • 그렇게 할 수 없으면 Excel에서 직접 CSV 파일을 여는 대신 새 통합 문서를 만든 다음
    Data > Get external data > From Text
    CSV 로 이동 하십시오.

어느 쪽이든 가져 오기 옵션이 표시되고 날짜가 포함 된 각 열을 선택하고 Excel에서 "일반"이 아닌 "텍스트"로 형식화하도록 지시합니다.


여기에 제공된 솔루션 중 어느 것도 좋은 솔루션이 아닙니다. 개별적인 경우에는 작동하지만 최종 디스플레이를 제어하는 ​​경우에만 가능합니다. 내 예를 들어 보자. 내 작품은 소매점에 판매하는 제품 목록을 만든다. 이것은 CSV 형식이며 부품 코드를 포함하며 일부는 0으로 시작하며 제조업체가 설정하지 않습니다. 선행 0을 제거하면 실제로 다른 제품과 일치 할 수 있습니다. 소매 고객은 백엔드 처리 프로그램으로 인해 목록을 CSV 형식으로 원합니다. 백엔드 처리 프로그램은 통제 할 수 없으며 고객마다 다릅니다. 따라서 CSV 파일의 형식을 변경할 수 없습니다. 접두사 '='도없고 탭도 추가되지 않았습니다. 원시 CSV 파일의 데이터가 정확합니다. 고객이 Excel에서 해당 파일을 열면 문제가 시작됩니다. 그리고 많은 고객들이 실제로 컴퓨터에 정통하지 않습니다. 이메일 첨부 파일을 열고 저장할 수 있습니다. 우리는 데이터를 두 가지 다른 형식으로 제공하려고합니다. 하나는 Excel과 친숙합니다 (TAB을 추가하여 위에서 제안한 옵션을 사용하고 다른 하나는 '마스터'로 사용하지만 일부 고객은 왜 그런지 이해하지 못하기 때문에 희망적인 생각이 될 수 있습니다. 우리는 왜 스프레드 시트에서 때때로 '잘못된'데이터를 보는 이유를 계속 설명하고 있습니다 .Microsoft가 올바르게 변경하기 전까지는 최종 사용자의 방법을 통제 할 수없는 한 적절한 해결 방법이 없습니다. 파일을 사용하십시오. 그러나 일부 고객은 왜이 작업을 수행해야하는지 이해하지 못하기 때문에 이는 바람직한 생각 일 수 있습니다. 그 동안 스프레드 시트에 '잘못된'데이터가 표시되는 이유를 계속 설명하고 있습니다. 최종 사용자가 파일을 사용하는 방법을 제어 할 수없는 한 Microsoft가 올바르게 변경하기 전까지는 이에 대한 적절한 해결책이 없습니다. 그러나 일부 고객은 왜이 작업을 수행해야하는지 이해하지 못하기 때문에 이는 바람직한 생각 일 수 있습니다. 그 동안 스프레드 시트에 '잘못된'데이터가 표시되는 이유를 계속 설명하고 있습니다. 최종 사용자가 파일을 사용하는 방법을 제어 할 수없는 한 Microsoft가 올바르게 변경하기 전까지는 이에 대한 적절한 해결책이 없습니다.


저는 이번 주에이 협약을 겪게되었는데, 이는 훌륭한 접근 방법 인 것 같지만 어느 곳에서나 참조 할 수는 없습니다. 그것에 익숙한 사람이 있습니까? 소스를 인용 할 수 있습니까? 나는 몇 시간과 시간을 보지 않았지만 누군가 가이 접근법을 인식하기를 바라고 있습니다.

예 1 : = ( "012345678905")는 012345678905로 표시됩니다 .

실시 예 2 : = ( "1954년 12월 12일")과 같은 디스플레이 1954년 12월 12일 하지 1954년 12월 12일 .


이 동일한 문제에 대해 내가 한 일은 Excel에서 파일을 열기 전에 각 CSV 값 앞에 다음을 추가하는 것입니다 : "=" ""및 CSV 값 뒤에 큰 따옴표. 예를 들어 다음 값을 사용하십시오.

012345,00198475

Excel에서 열기 전에 다음과 같이 변경해야합니다.

"="""012345","="""00198475"

이렇게하면 모든 셀 값이 Excel에서 수식으로 표시되므로 숫자, 날짜 등으로 형식이 지정되지 않습니다. 예를 들어 012345 값은 다음과 같이 나타납니다.

="012345"

Excel이 아닙니다. Windows는 공식, 데이터를 날짜로 인식하고 자동 수정합니다. Windows 설정을 변경해야합니다.

"제어판"(-> "클래식보기로 전환")-> "국가 및 언어 옵션"-> "국가 옵션"-> "사용자 정의 ..."-> "숫자"-> 기호 변경 당신이 원하는 것에 따라.

http://www.pcreview.co.uk/forums/enable-disable-auto-convert-number-date-t3791902.html

예를 들어 고객의 컴퓨터에서 이러한 설정을 변경하지 않으면 데이터 대신 날짜가 표시됩니다.


안녕하세요. 같은 문제가 있습니다.

이 vbscipt를 작성하여 다른 CSV 파일을 만듭니다. 새로운 CSV 파일은 각 필드의 글꼴로 공백이 있으므로 Excel은 텍스트로 이해합니다.

따라서 아래 코드 (예 : Modify_CSV.vbs)를 사용하여 .vbs 파일을 만들고 저장 한 후 닫습니다. 원본 파일을 vbscript 파일로 끌어서 놓습니다 . 같은 위치에 파일 이름이 "SPACE_ADDED"인 새 파일이 생성됩니다.

Set objArgs = WScript.Arguments

Set objFso = createobject("scripting.filesystemobject")

dim objTextFile
dim arrStr ' an array to hold the text content
dim sLine  ' holding text to write to new file

'Looping through all dropped file
For t = 0 to objArgs.Count - 1
    ' Input Path
    inPath = objFso.GetFile(wscript.arguments.item(t))

    ' OutPut Path
    outPath = replace(inPath, objFso.GetFileName(inPath), left(objFso.GetFileName(inPath), InStrRev(objFso.GetFileName(inPath),".") - 1) & "_SPACE_ADDED.csv")

    ' Read the file
    set objTextFile = objFso.OpenTextFile(inPath)


    'Now Creating the file can overwrite exiting file
    set aNewFile = objFso.CreateTextFile(outPath, True) 
    aNewFile.Close  

    'Open the file to appending data
    set aNewFile = objFso.OpenTextFile(outPath, 8) '2=Open for writing 8 for appending

    ' Reading data and writing it to new file
    Do while NOT objTextFile.AtEndOfStream
        arrStr = split(objTextFile.ReadLine,",")

        sLine = ""  'Clear previous data

        For i=lbound(arrStr) to ubound(arrStr)
            sLine = sLine + " " + arrStr(i) + ","
        Next

        'Writing data to new file
        aNewFile.WriteLine left(sLine, len(sLine)-1) 'Get rid of that extra comma from the loop


    Loop

    'Closing new file
    aNewFile.Close  

Next ' This is for next file

set aNewFile=nothing
set objFso = nothing
set objArgs = nothing

CSV 파일을 수정하지 않고 다음을 수행 할 수 있습니다.

  1. Excel 셀 서식 옵션을 "텍스트"로 변경하십시오.
  2. 그런 다음 "텍스트 가져 오기 마법사"를 사용하여 csv 셀을 정의하십시오.
  3. 가져온 데이터를 삭제하면
  4. 그런 다음 일반 텍스트로 붙여 넣기

Excel은 자동 날짜 형식을 무시하고 csv 셀을 텍스트 형식으로 올바르게 서식 지정하고 분리합니다.

어리석은 해결 방법이지만 가져 오기 전에 csv 데이터를 수정하는 것보다 낫습니다. Andy Baird와 Richard는이 방법을 회피했지만 몇 가지 중요한 단계를 놓쳤다.


나는 이것이 오래된 실이라는 것을 안다. 나와 같은 사람들은 여전히 ​​powershell com object를 통해 office 2013을 사용 하여이 문제가 발생하면 opentext 메소드를 사용할 수 있습니다 . 문제는이 방법이 많은 인수를 가지고 있으며 때로는 상호 배타적이라는 것입니다. 이 문제를 해결하기 위해이 게시물 에서 소개 된 invoke-namedparameter 메서드를 사용할 수 있습니다 . 예를 들면

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

불행히도 셀에 줄 바꿈이 포함되어있을 때이 방법이 어떻게 든 CSV 파싱을 중단한다는 것을 알았습니다. 이것은 csv에서 지원되지만 Microsoft 구현은 버그가있는 것으로 보입니다. 또한 독일의 특정 문자를 감지하지 못했습니다. 올바른 문화를 제공해도이 행동은 바뀌지 않았습니다. 모든 파일 (csv 및 스크립트)은 utf8 인코딩으로 저장됩니다. 먼저 셀별로 csv 셀을 삽입하기 위해 다음 코드를 작성했습니다.

$ex = New-Object -com "Excel.Application"
$ex.visible = $true;
$csv = "path\to\your\csv.csv";
$ex.workbooks.add();
$ex.activeWorkbook.activeSheet.Cells.NumberFormat = "@";
$data = import-csv $csv -encoding utf8 -delimiter ";"; 
$row = 1; 
$data | %{ $obj = $_; $col = 1; $_.psobject.properties.Name |%{if($row -eq1){$ex.ActiveWorkbook.activeSheet.Cells.item($row,$col).Value2= $_ };$ex.ActiveWorkbook.activeSheet.Cells.item($row+1,$col).Value2 =$obj.$_; $col++ }; $row++;}

그러나 이것은 매우 느리기 때문에 대안을 찾았습니다. 외관상 Excel에서는 행렬을 사용하여 셀 범위의 값을 설정할 수 있습니다. 그래서이 블로그 의 알고리즘을 사용하여 csv를 다중 배열로 변환했습니다.

function csvToExcel($csv,$delimiter){
     $a = New-Object -com "Excel.Application"
     $a.visible = $true

    $a.workbooks.add()
     $a.activeWorkbook.activeSheet.Cells.NumberFormat = "@"
     $data = import-csv -delimiter $delimiter $csv; 
     $array = ($data |ConvertTo-MultiArray).Value
     $starta = [int][char]'a' - 1
     if ($array.GetLength(1) -gt 26) {
         $col = [char]([int][math]::Floor($array.GetLength(1)/26) + $starta) + [char](($array.GetLength(1)%26) + $Starta)
     } else {
         $col = [char]($array.GetLength(1) + $starta)
     }
     $range = $a.activeWorkbook.activeSheet.Range("a1:"+$col+""+$array.GetLength(0))
     $range.value2 = $array;
     $range.Columns.AutoFit();
     $range.Rows.AutoFit();
     $range.Cells.HorizontalAlignment = -4131
     $range.Cells.VerticalAlignment = -4160
}

 function ConvertTo-MultiArray {
     param(
         [Parameter(Mandatory=$true, Position=1, ValueFromPipeline=$true)]
         [PSObject[]]$InputObject
     )
     BEGIN {
         $objects = @()
         [ref]$array = [ref]$null
     }
     Process {
         $objects += $InputObject
     }
     END {
         $properties = $objects[0].psobject.properties |%{$_.name}
         $array.Value = New-Object 'object[,]' ($objects.Count+1),$properties.count
         # i = row and j = column
         $j = 0
         $properties |%{
             $array.Value[0,$j] = $_.tostring()
             $j++
         }
         $i = 1
         $objects |% {
             $item = $_
             $j = 0
             $properties | % {
                 if ($item.($_) -eq $null) {
                     $array.value[$i,$j] = ""
                 }
                 else {
                     $array.value[$i,$j] = $item.($_).tostring()
                 }
                 $j++
             }
             $i++
         }
         $array
     } 
} 
csvToExcel "storage_stats.csv" ";"

위의 코드를 사용하면 CSV를 Excel로 변환해야합니다. csv의 경로와 하단의 구분 문자를 변경하십시오.


필자의 경우 R을 사용하여 생성 된 CSV 파일의 "Sept8"은 Excel 2013에서 "8-Sept"로 변환되었습니다. xlsx 패키지의 write.xlsx2 () 함수를 사용하여 xlsx 형식으로 출력 파일을 생성하면 문제가 해결되었습니다. 원하지 않는 변환없이 Excel에서로드 할 수 있습니다. 따라서 csv 파일이 제공되면 write.xlsx2 () 함수를 사용하여 파일을 R로로드하고 xlsx로 변환 할 수 있습니다.


Google 드라이브 (또는 Mac을 사용하는 경우 숫자)를 사용하는 해결 방법 :

  1. Excel에서 데이터를 엽니 다
  2. 잘못된 데이터가있는 열의 형식을 텍스트 (서식> 셀> 숫자> 텍스트)로 설정하십시오.
  3. .csv를 Google 드라이브에로드하고 Google 스프레드 시트에서 엽니 다
  4. 문제의 열을 복사
  5. 텍스트로 Excel에 열 붙여 넣기 (편집> 붙여 넣기 특수> 텍스트)

또는 3 단계에서 Mac을 사용하는 경우 숫자로 데이터를 열 수 있습니다.


(EXCEL 2016 이상에서는 실제로 이전 버전에서는 시도하지 않았습니다)

  1. 새 빈 페이지를 엽니 다
  2. "데이터"탭으로 이동
  3. "텍스트 / CSV에서"를 클릭하고 csv 파일을 선택하십시오
  4. 데이터가 올바른지 미리보기에서 확인하십시오.
  5. 일부 열이 날짜로 변환되는 경우 "편집"을 클릭 한 다음 열 머리글에서 달력을 클릭하여 텍스트 유형을 선택하십시오.
  6. "닫기 및로드"를 클릭하십시오

Excel 2003에서 2007까지이 작업을 수행하는 간단한 방법을 찾았습니다. 빈 xls 통합 문서를 엽니 다. 그런 다음 데이터 메뉴로 이동하여 외부 데이터를 가져옵니다. csv 파일을 선택하십시오. 마법사를 진행 한 다음 "열 데이터 형식"에서 "텍스트"로 강제해야하는 열을 선택하십시오. 그러면 전체 열을 텍스트 형식으로 가져와 Excel에서 특정 셀을 날짜로 처리하지 못하게됩니다.


이 문제는 여전히 Mac Office 2011 및 Office 2013에서 발생하며이를 방지 할 수 없습니다. 그런 기본적인 것 같습니다.

필자의 경우 CSV 안에 "1-2"및 "7-12"와 같은 값이 쉼표로 올바르게 묶여 있습니다. 이렇게하면 나중에 일반 텍스트로 변환하려고하면 Excel 내의 날짜로 자동 변환됩니다. 또한 바코드 및 EAN 번호에서 발견 된 많은 수를 다시 123E + 숫자로 다시 변환 할 수없는 형식으로 다시 포맷합니다.

Google 드라이브의 Google 스프레드 시트는 숫자를 날짜로 변환하지 않습니다. 바코드는 3 문자마다 쉼표가 있지만 쉽게 제거됩니다. MAC / Windows CSV를 다룰 때 특히 CSV를 잘 처리합니다.

누군가를 언젠가 구할 수도 있습니다.


가장 쉬운 해결책 오늘 막 이것을 알아 냈습니다.

  • Word에서 열기
  • 모든 하이픈을 대시로 바꾸십시오
  • 저장하고 닫습니다
  • Excel에서 열기

편집이 끝나면 항상 Word에서 다시 열어서 대시를 하이픈으로 다시 바꿀 수 있습니다.


과학적 표기법으로 계속 변환되는 신용 카드 번호로이 작업을 수행합니다. .csv를 Google 스프레드 시트로 가져옵니다. 가져 오기 옵션을 통해 숫자 값의 자동 서식을 비활성화 할 수 있습니다. 민감한 열을 일반 텍스트로 설정하고 xlsx로 다운로드합니다.

그것은 끔찍한 워크 플로우이지만 적어도 내 가치는 그대로 유지됩니다.


이 vba 매크로를 작성하여 숫자를 붙여 넣기 전에 기본적으로 출력 범위를 텍스트로 지정합니다. Excel에서 날짜로 해석하지 않고 8/11, 23/6, 1/3 등의 값을 붙여 넣을 때 나에게 완벽하게 작동합니다.

Sub PasteAsText()
' Created by Lars-Erik Sørbotten, 2017-09-17
Call CreateSheetBackup

Columns(ActiveCell.Column).NumberFormat = "@"

Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
DataObj.GetFromClipboard

ActiveCell.PasteSpecial

End Sub

이것이 다른 사람들에게도 도움이되는지 알고 싶습니다. 나는이 문제에 대한 해결책을 잠시 동안 찾고 있었지만 입력 텍스트 앞에 '를 삽입하지 않는 빠른 vba 솔루션을 보지 못했습니다. 이 코드는 원래 형식으로 데이터를 유지합니다.


필드 시작 부분에 반전 된 쉼표를 넣으면 텍스트로 해석됩니다.

예 : 25/12/2008된다'25/12/2008

가져올 때 필드 유형을 선택할 수도 있습니다.


다른 방법 :

변경하려는 열의 형식을 '텍스트'로 변환하십시오. 보존, 복사하려는 모든 셀을 선택하십시오. 해당 열을 선택 취소하지 않고 "편집> 선택하여 붙여 넣기> 값으로"를 클릭하십시오.

CSV로 저장하십시오. 셀 형식을 CSV 파일로 저장할 수 없으므로 파일을 다시 열면 날짜 형식으로 표시되므로 파일에서 마지막으로 수행해야합니다.

참고 URL : https://stackoverflow.com/questions/165042/stop-excel-from-automatically-converting-certain-text-values-to-dates



반응형