programing

피벗 테이블에서 그룹화된 날짜의 날짜 형식 변경

bestprogram 2023. 5. 22. 21:50

피벗 테이블에서 그룹화된 날짜의 날짜 형식 변경

저는 Excel 2010에서 일하고 있습니다.

원시 데이터에 올바른 날짜 필드와 2015년 1월 1일과 같은 날짜가 있다고 가정합니다.그런 다음 행 레이블에 날짜 필드가 있는 피벗 테이블을 만듭니다.

이제 결과를 월별로 표시하여 "그룹 필드"를 마우스 오른쪽 단추로 누른 후 선택하여 월별로 그룹화한다고 가정합니다.

이제 데이터가 월 단위로 Mmm 형식으로 표시됩니다.Mmmm 형식을 어떻게 변경하시겠습니까?또는 숫자로 표시하려면 어떻게 해야 합니까(즉, Jan이 1로 표시됨).

타임스탬프가 있고 일별로 그룹화하는 날짜는 어떻습니까?피벗 테이블에 날짜가 D-mmm으로 표시됩니다.MM/DD/YYYY를 원하면 어떻게 합니까?

네, 저는 이미 -> 필드 설정 -> 번호 형식을 오른쪽 클릭하여 변경해 보았습니다.효과가 없었어요.

저도 같은 문제를 겪고 있었습니다.피벗 테이블에서 보기를 변경할 값을 마우스 오른쪽 단추로 클릭하고 "그룹 해제" 옵션을 선택했습니다.그러면 레귤레이터 보기 형식이 다시 나타납니다.이것이 당신에게 도움이 되기를 바랍니다.

Excel 2016부터는 Excel이 그룹화된 날짜를 피벗 테이블에서 자동으로 포맷하는 방식을 변경할 수 없습니다.

해결 방법은 원본 데이터 파일에 원하는 형식의 새 필드/열을 만들고 피벗 테이블에서 사용하는 것입니다.

날짜가 분할된 열(피벗 연도, 분기 등)을 선택하고 데이터 그룹을 해제합니다.날짜 형식으로 이동합니다.

Baris Sari의 대답은 부분적으로 맞습니다.원하는 날짜 형식을 설정할 수 있도록 날짜 그룹을 해제해야 합니다.

피벗 테이블에서 모든 날짜를 선택한 다음 마우스 오른쪽 단추를 클릭하고 그룹 해제를 선택합니다.그런 다음 선택한 항목을 다시 마우스 오른쪽 단추로 클릭하고 셀 형식을 누릅니다.창이 열리는 첫 번째 탭은 숫자와 관련이 있습니다.

이것은 Excel 2016과 2010에서 작동했습니다.

방금 피벗 테이블의 데이터 원본이었던 날짜-시간 필드(dd/mm/yyyh:mm:ss)를 텍스트(ddd.ttttt)로 다시 포맷한 다음 피벗 테이블을 새로 고치면 선택한 날짜-시간 형식으로 표시됩니다.

어떤 이유에서인지 "그룹 필드"("7"로 표시됨)라는 새로운 옵션이 있는 것 같습니다.이 옵션을 클릭하면 월/일/시간 등의 라디오 단추 옵션이 표시됩니다.환경설정을 선택하고 확인을 클릭합니다.이것이 당신에게도 효과가 있기를 바랍니다!

원시 데이터에서 해당 열에 날짜를 텍스트로 지정하고 피벗에서 열을 선택한 다음 일반에서 짧은 날짜로 변경합니다.그것은 나에게 효과가 있었다.

엑셀 문서의 내부 OOXML(Office Open XML)을 조작하여 이 문제를 해결할 수 있었습니다.Excel 문서를 여는 방법을 모르는 경우(내부적으로 구성된 xml 문서를 보기 위해) 다음 링크 중 하나를 참조하십시오.

  • "최적의 방법" Visual Studio 확장자(OOXML 패키지 편집기)를 사용하여 Excel 파일을 직접 열거나 편집합니다. http://www.ericwhite.com/blog/open-xml-installation-center/

  • 또는 "확장된" Chrome 기반 확장(Excel 파일을 끌어다 놓기): https://chrome.google.com/webstore/detail/ooxml-tools/bjmmjfdegplhkefakjkccocjanekbapn?hl=en (변경 사항을 저장한 후 새 파일을 다운로드할 수 없음)

  • 또는 "최소한의 조언" 방법

    1.)  Change your filename from "MyExcelFile.xlsx" to "MyExcelFile.zip"
    2.)  Unzip the file
    3.)  Change the format (as explained below)
    4.)  Zip it all back up and change extension to .xlsx
    5.)  Warning, This method often corrupts my files, but not always, so I use OOXML Package editor in Visual Studio instead.
    

방법에 관계없이 이제 피벗 테이블의 "PivotCache"로 이동합니다.내 'unziped excel file' 내의 파일 경로는 루트 > xl > pivotCache > pivotCacheDefinition1.xml입니다.

제 복사본에는 800줄 정도의 xml이 있습니다. 그보다 훨씬 더 많을 수도 있지만, 다시 포맷하려는 부분에만 집중하십시오.(Visual Studio Ctrl+K, Ctrl+D를 사용하는 경우 하나의 긴 축약선이 되지 않도록 xml을 예쁘게 표시해야 합니다.)

특성 검색: groupBy="months"

나의 견본 발견.

    <cacheField name="Months" numFmtId="0" databaseField="0">
      <fieldGroup base="2">
        <rangePr groupBy="months" startDate="2019-01-02T00:00:00" endDate="2019-12-27T00:00:00"/>
        <groupItems count="14">
          <s v="&lt;1/2/2019"/>
          <s v="Jan"/>
          <s v="Feb"/>
          <s v="Mar"/>
          <s v="Apr"/>
          <s v="May"/>
          <s v="Jun"/>
          <s v="Jul"/>
          <s v="Aug"/>
          <s v="Sep"/>
          <s v="Oct"/>
          <s v="Nov"/>
          <s v="Dec"/>
          <s v="&gt;12/27/2019"/>
        </groupItems>
      </fieldGroup>
    </cacheField>
  </cacheFields>

...그리고 "Jan"을 "1" 또는 매달 원하는 문자열 표현으로 바꾸기만 하면 됩니다!

이것을 한 단계 더 나아가지만, 여전히 열별로 그룹을 포맷하는 방법에 대한 질문에 답하는 것은 groupBy="days"를 포맷하는 것이며, 이는 다음과 같은 결과를 낳습니다.

    <fieldGroup par="5" base="2">
    <rangePr groupBy="days" startDate="2019-01-02T00:00:00" endDate="2019-12-27T00:00:00"/>
    <groupItems count="368">
    <s v="(blank)"/>
    <s v="1-Jan"/>
    <s v="2-Jan"/>
    <s v="3-Jan"/>...

정확히는 368개의 요소들이 나열되어 있습니다.365일에 첫 번째와 마지막 요소를 더하면 2월 29일이 포함됩니다.일 단위로 그룹화된 행 형식을 지정하려는 경우 변경할 요소가 다음과 같습니다.i:

    <s v="1-Jan"/>

예를 들어, 요소를 중국어로 변경할 수 있습니다(또는 원하는 요소를 366개만 교체하면 됩니다). (다시 말하지만, 첫 번째 요소와 마지막 요소는 그대로 둡니다.)

그래서 "1-Jan" "2-Jan"이 될 수 있습니다.

<s v="1月1日"/>
<s v="1月2日"/>...

당신은 제가 지난 몇 달 동안 보여준 것과 똑같은 방식으로 이것들을 취급합니다.하지만 매일 요소가 필요하기 때문에 손으로 하는 것이 더 지루하기 때문에 C# 함수를 만들어 요소를 파일로 빠르게 뱉어냅니다(복사하여 .xml에 붙여넣기).

        public void GenerateExcelGroupedDateFormatPivotTableElements()
        {
            int year = 2019;
            var sb = new StringBuilder();
            for (int i = 1; i <= 12; i++)
            {
                var daysInMonth = DateTime.DaysInMonth(year, i);
                for (int j = 1; j <= daysInMonth; j++)
                {
                    //Modify template below as you wish, (uses String Interpolation $) and (Verbatim @ symbol)
                    
                    //Full Month Name: ie January-day
                    string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(i);
                    sb.AppendLine($@"<s v=""{monthName}-{j}""/>");

                    //or Chinese sample
                    //sb.AppendLine($@"<s v=""{i}月{j}日""/>");
                }
            }
            File.WriteAllText("_ExcelPivotTableGroupedDateHelper.txt",sb.ToString());
        }

중요한 것은 이 기능을 사용하여 하루를 뱉어낸다면, 붙여넣는 원래 세트에 2월 29일이 포함되어 있으면 2월 29일에 수동으로 추가하십시오(제가 그랬던 것처럼).

고지 사항: 저는 Excel 전문가가 아니며 Excel 시트의 OOOXML 내에서 이를 수행하는 더 나은 방법이 있을 수 있습니다.이것은 제가 오늘 발견한 것이고 제가 게시한 답변을 직접 찾을 수 없었기 때문에 제가 발견한 것을 공유하려고 생각한 것입니다.

이에 대한 후속 조치 및 주의 사항을 알려주시면 감사하겠습니다.

해피 코딩!

저는 두 가지를 시도했습니다.

  1. 저는 그냥 평소처럼 셀의 형식을 바꿨습니다.

    셀 형식 지정

  2. 그룹화에서 두 개 이상의 항목을 선택했습니다(제어를 사용하여 창을 클릭하거나 명령을 사용하여 Mac을 클릭).

    시작 및 종료 날짜가 포함된 "자동"과 시간 분할 항목 목록(초, 분, 시간 등)이 포함된 "기준" 두 개의 선택 그룹을 보여주는 그룹화 상자 이미지...

ps.: 직관적이지 않기 때문에 둘 이상의 항목을 선택하는 방법을 지정했습니다.

열 제목 중 하나를 선택하고 그룹 해제를 클릭했습니다.제 문제는 피벗 테이블의 제목이 mmm이고 저는 제 원시 데이터에 해당하는 m/d/yyyy를 원했습니다.

언급URL : https://stackoverflow.com/questions/31862497/changing-the-date-format-for-grouped-dates-in-a-pivot-table