{=B2*C2 \# "-#.##0,00"}
저는 Word의 표에 간단한 기능을 가지고 있습니다 . 그러나 2.345,67
나는 네덜란드에 살고 있기 때문에 결과는 다음과 같습니다 . 이제 이 문서를 영어 동료들과 공유해야 하며 그러한 수식(많음)의 형식을 2,345.67
영국 또는 미국 로케일로 표시하고 싶습니다. 을 사용하여 이를 수행할 수 있지만 {=B2*C2 \# "-#.##0,00"}
문서의 두 가지 버전을 유지 관리하고 각 필드를 모두 업데이트해야 합니다.
나는 중앙 방식으로 로케일을 설정하는 것을 선호하지만 문서에 대한 로케일을 설정하거나 교정 도구를 통해 설정하는 것은 도움이 되지 않습니다.이 제안, 즉 \l 2057
영어와 같은 로케일을 사용하면 구문 오류가 발생합니다.
언어 설정을 사용하는 것을 선호하지만 서식 문자열을 직접 변경할 수 있습니다. 읽는 필드에는 동일하게 적용되지 않습니다. B2
쉼표가 아닌 소수점을 사용하도록 필드를 변경하면 제대로 계산되지 않습니다.
전체 컴퓨터의 로케일을 변경하는 것이 도움이 되었지만 장기적인 해결책은 아닙니다.
답변1
이 분야에는 수많은 문제가 있으며 그중 어느 것도 특별히 해결하기 쉬운 것은 없습니다.
어떤 면에서 주요 문제는 실제로 설명하는 문제, 즉 서식이 작동하지 않는다는 문제가 아니라 사용자가 테이블에 숫자를 입력할 때 숫자가 "고정"된다는 문제입니다.
1234,56
Word에는 이를 다음과 같이 변경할 수 있는 완전히 안정적인 메커니즘이 없습니다.
1234.56
Word에서는 Windows 제어판의 소수점 문자가 "."로 설정되어 있는지 여부에 따라 숫자를 다르게 인식합니다. 또는 ",".
해당 값이 없는(빈 셀만) 문서를 생성하는 경우그리고값을 입력할 미국/영국 사용자에게 "양식"을 보내려고 합니다.그리고그런 다음 영국/미국 사용자만 사용할 수 있으며, 수행할 수 있는 작업이 몇 가지 있습니다.
그렇지 않으면 AFAIK에서는 사람들이 매우 부자연스러운 방식으로 데이터를 입력하도록 강요하거나 사용자가 1234.56을 입력한 후 모든 숫자를 다른 문화의 형식으로 쉽게 변환해야 합니다. 가장 간단하게는 와일드카드 찾기/바꾸기를 사용하여 다음과 같은 항목을 바꿀 수 있습니다.
([0-9]),([0-9])
에게
\1.\2
(또는 그 반대), 숫자처럼 보이는 다른 것을 수정하지 않을 것이라고 가정합니다. 그리고 이를 VBA 매크로로 래핑해야 할 수도 있습니다.
서식 스위치의 경우 이를 처리하는 유일하고 안정적인 방법은 해당 스위치를 사용하지 않고 기본적으로 Word에서 숫자 서식을 지정하는 방식에 전적으로 의존하는 것입니다. (FWIW, 사람들이 Word 숫자 형식에 "#" 자리 표시자를 넣는 경우는 때때로 Excel 배경에서 왔으며 필요하지 않다는 사실을 깨닫지 못했기 때문입니다.)
그러나 숫자 형식을 사용해야 하는 경우 올바른 "소수점" 및 "천 단위 구분 기호" 문자를 형식에 추가해야 합니다. 이는 문서를 편집하는 컴퓨터의 Windows 제어판에서 사용되는 것과 동일한 문자를 의미합니다.
필드를 사용하여 이를 수행하는 완전히 안정적인 기본 제공 방법은 없습니다. VBA를 사용하여 Windows에서 관련 문자를 가져올 수 있습니다. 또는 다음 행을 따라 일부 중첩 필드를 사용하여 "가짜"를 시도할 수 있습니다.
{ IF 1/2 = 0,5 "{ SET POINT "," }{ SET GROUP "." }" "{ SET POINT "." }{ SET GROUP "," }" }
(기억모두{ }는 Windows 데스크톱 Word에서 Ctrl-F9를 사용하여 삽입할 수 있는 특수 필드 코드 중괄호 쌍이어야 합니다.
그럼 대신에
{=B2*C2 \# "-#.##0,00"}
너는 사용한다
{=B2*C2 \# "-#{ GROUP }##0{ POINT }00"}
또는 문서 시작 부분에서 형식을 정의할 수 있습니다.
{ SET FORMAT1 "-#{ GROUP }##0{ POINT }00" }
그런 다음 사용
{=B2*C2 \# "{ FORMAT1 }"}
분명히 언급된 대로 이 접근 방식은 임의의 로케일(예를 들어 일부 로케일은 천 단위 구분 기호로 잘림 방지 공백 문자를 사용함)이나 제어판의 비정상적인 설정을 처리하지 않지만 NL/US/UK에는 충분할 수 있습니다.
불행하게도 이는 해결하기 "쉬운" 문제입니다. 실제로 원하는 것이 Windows 설정에 관계없이 모든 사용자(NL/UK/US)가 동일한 형식을 입력하고 볼 수 있도록 모든 것을 수정하는 것이라면 이는 실제로 해결하기 훨씬 더 어려운 문제입니다. 모든 사람이 미국 형식을 입력하고 확인해야 한다고 가정합니다. 예:1,234,567.89
그러면 문제는 Word가 일반적인 NL 설정으로 설정된 시스템에서 "1234.56"을 올바르게 인식하지 못한다는 것입니다. 이를 처리하기 위해 (IMO) 할 수 있는 유일한 일은...
ㅏ. 사용자가 입력한 데이터를 피하거나 사용자가 정수 데이터만 입력하도록 제한
비. 보안 제한에 의해 배제되지 않는 경우 VBA를 사용하여 사용자 시스템의 관련 Windows 설정을 일시적으로 수정합니다.
이러한 옵션 중 하나에 대한 솔루션을 제공하려고 노력할 가치가 있는지 잘 모르겠습니다.
그러나 이 문제에 대한 범용 솔루션을 위해 고려해야 할 몇 가지 사항을 다음과 같이 나열하는 것은 가치가 있을 것입니다.
기본적인 문제는 Word의 숫자 형식이 주로 Windows 설정/제어판의 설정에 의존한다는 것입니다. 실제로 Word의 구현은 너무 오래되어 해당 설정 중 일부만 적용됩니다. 예를 들어, 제어판에서 설정한 것과 관계없이 3개의 그룹으로 숫자 그룹화를 수행합니다. 이미 알고 있듯이 로케일 스위치를 사용하거나
\l 2057
교정 언어를 적용하여(실제로 날짜와 함께 어느 정도 작동함) 숫자 표시에 영향을 줄 수 없습니다 . 교정 언어를 적용할 수 있더라도 여전히 해결해야 할 작업이 있습니다. 변경하는 방법.데스크톱 버전과 온라인 버전의 Word는 다르게 작동합니다. AFAICS는 현재 웹 버전의 Word에서 로케일 설정에 관계없이 필드 결과를 그대로 유지합니다. 물론 시간이 지남에 따라 변경될 수 있으며 Word의 "장치" 버전은 다르게 작동할 수 있습니다. Mac 데스크톱 버전은 Windows 버전과 거의 동일한 방식으로 작동하지만 Mac 설정을 수정하려면 Windows 버전과 다른 코드가 필요합니다.
"형식" 문제만 있는 것이 아닙니다. "숫자를 어떻게 입력하는가" 문제와 "인식" 문제도 있습니다.
숫자 형식 문자열에는 다음 중 하나를 허용하는 규칙이 없습니다.우세하다Windows 제어판의 값을 사용하거나 Windows 제어판에 지정된 값을 사용하도록 지정할 수도 있습니다.
내 말은우세하다당신은 다음과 같은 일을 할 수 없다는 것입니다
{ DECIMAL "." }{ =10000/3 \# "###0<decimal>00" }
그래서 Word는언제나사용 "." Windows 설정에 관계없이 소수점으로 표시됩니다.
"Windows 제어판에 지정된 값을 사용한다"는 것은 다음과 같은 형식을 입력할 때 의미합니다.
#,##0.00
","가 실제로 Windows 설정에서 소수점 문자인 경우 전체 형식 문자열이 원하는 대로 작동할 수 없습니다.
당신은 틀림없이 정말로 다음과 같은 것을 사용하고 싶을 것입니다
#<thousands>##0<decimal>00
Word는 실제로 Windows 제어판의 값을 선택합니다.
VBA를 사용하는 것 외에 Word에는 천 단위 구분 문자, 소수점 문자(또는 통화 문자열)의 현재 값을 안정적으로 검색할 수 있는 방법이 없습니다.
(귀하의 경우에는 관련이 없지만 완전성을 위해 언급할 가치가 있음) SharePoint 메타데이터를 사용하여 콘텐츠 컨트롤을 통해 숫자 값을 삽입하는 경우 결국 "." 소수점에 대한 규칙은 XML이 사용하는 규칙이고 Word에서는 이를 극복하는 데 도움이 되지 않기 때문입니다.
숫자 형식 문자열에서 "천 단위 구분 문자"는 위치가 아닙니다. 예를 들어 미국/영국 규칙에서 형식을 지정
1000000
하면 가 아닌 가\#",0"
제공됩니다 .1,000,000
100000,0
통화 데이터도 입력/형식화해야 하는 경우 추가 설정이 적용됩니다. 두 개 이상의 서로 다른 통화로 된 데이터가 포함된 문서가 있는 경우 Word에서는 그 중 하나만 통화로 인식한다는 점을 인정해야 합니다.
Word는 Windows 제어판에서 목록 구분 문자라는 또 다른 특수 문자의 값을 가져옵니다. 일반적으로 "," 또는 ";"입니다. 매개변수와 함께 함수를 사용하는 수식이 있는 경우 올바른 구분 기호를 사용해야 합니다. (TOC 및 EQ와 같은 다른 필드 유형에서도 올바른 구분 기호를 사용해야 할 수도 있습니다).
필드 코딩을 사용하여 세 가지 변수 문자(소수점, 숫자 그룹 구분 기호, 목록 구분 기호)의 값을 감지하거나 평가하는 것은 일반적인 경우 사실상 불가능하다고 생각됩니다. 위에서 제안한 접근 방식조차도 구문 오류가 발생할 수 있습니다. 특히 일반 문서에서는 문제를 일으키지 않는 구문 오류를 Word에서 표시할 수 있는 메일 병합을 수행하는 경우에는 더욱 그렇습니다.