[[20220107171041]] 『ピボットテーブルで日付の集計ができません』(かとけん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ピボットテーブルで日付の集計ができません』(かとけん)

お世話になります。
WINDOWS10PROでOFFICE365を使用しています。
データにピボットテーブルをかけて、日付欄を月ごとに集計したいと思っています。
元データの日付欄は"2021/3/1"のように表示されており、ホームの「数値」の上にある表示形式の表示を見ると、「日付」になっています。

なお、オプションのデータにある「ピボットテーブルで日付での自動集計を無効にする」のチェックは入っていません。

この状態でピボットテーブルをかけると、
そもそも日付欄が”20210301"のように表示され、「日付として認識されていない」ように思います。
自動集計もできませんし、日付を選択してグループ化をしようとしても、
「日付に関する集計」のメニューが出ずに「値としての集計」のみができるようになっています。

元データを見ると「日付」になっているのですが。。。

どうすればよろしいでしょうか。
よろしくお願い致します。

< 使用 Excel:Office365、使用 OS:Windows10 >


 >元データの日付欄は"2021/3/1"のように表示されており

 そのセルを選択すると数式バーにはどのように表示されるのでしょうか?
(コナミ) 2022/01/07(金) 19:15

ピボットテーブル内の"20210301"と表示されている部分のセルの書式設定が
ユーザー定義になっていませんか?

ちなみに、よくある間違いですが、Excelにおいて日付は「数値」です。
そして表示形式で「数値」を「日付」に変換して表示しているだけです。

>ホームの「数値」の上にある表示形式の表示を見ると、「日付」になっています。
となっていても、これは日付形式のデータではなく、数値を日付に変換して表示しているにすぎません。
そして、表示形式が「ユーザー定義」になっていて、「yyyymmdd」となっている場合に、
かとけん様の言われている事が再現できたので、
おそらく、元データに、数値データと文字列データなどが混ざっている物と思われます。
間違っていたらすみません。

例えば、csvから読み込んだデータや、Webから落とし込んだデータの場合、
数値データではない場合もあります。

(ヘンリー) 2022/01/07(金) 19:21


ありがとうございます。
実は、元のデータが「20210301」という表示になっていました。
それを自分で、「データ・区切り位置」から「2021/3/1」の形式に修正をしたものです。
表示は一見日付になっていても、実は日付ではないということなのですかね。
ピボットで取り込む前のデータで、日付データを選択すると、数式バーには「2021/3/1」のように表示されており、「ホーム・数式」の上部のバーにも日付と表示されています。
これにピボットをかけると、「20210301」という表示に変わり、選択してみると数式バーには「20210301」と表示されます。選択してセルの書式設定を見てみると、「ユーザ形式」とはなっておらず、「標準」と出ます。
ここで表示形式を日付に変えようとすると、表示が「#############」となってしまい、
列幅を広げようが何をしようが、表示が####のままとなってしまいます。
自分で考えらえることはすべてしてみました。
どうすればよいのかわかりません。

よろしくお願いします。
(かとけん) 2022/01/08(土) 06:50


>実は、元のデータが「20210301」という表示になっていました。
>それを自分で、「データ・区切り位置」から「2021/3/1」の形式に修正をしたものです。
データタブの区切り位置機能から、1回で「2021/3/1」とできるやり方はわかりませんでしたが…
表示が「#############」となるのは、数値形式(日付のシリアル値)ではなく、
文字列("20210301")または数値(2千21万3百1)になっているからです。

>選択してセルの書式設定を見てみると、「ユーザ形式」とはなっておらず、「標準」と出ます。
標準ということは、Excelは「20210301」を「2千21万3百1」という数値で入力されているものとみなします。
Excelは日付ではなく、数値(シリアル値)を日付の様に見せかけています。
数値の1を、1900/1/1としています。
従って、2021/3/1は4万4千2百5十6という数値になります。2021年3月でも4万4千ですよ。
それが、2千万というのは、はるか未来の日付になってしまいます。
だから「表示しきれない」という意味の#で表現されるのです。

【解決策(案)】
元データが、「20210301」であれば、これを数値形式(日付のシリアル値)にしてあげる事です。
例えば、「20210301」がA2セルに入力されているとして、ワークシート関数ならば
=DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))
という感じです。
この列をキーとするピボットテーブルを作成すれば解決できると思います。
(ヘンリー) 2022/01/08(土) 10:36


ヘンリー様
ありがとうございます。おっしゃっている通りの加工をすると、ピボットテーブルでも日付だと認識してくれました。
助かりました。試行錯誤する中で、私は=left(A2,4)&"/"&mid(A2,5,2)&"/"&right(A2,4))のようなことも試していたのですが、これではDate関数を使っていないので日付と認識されないのですね。

なお、区切り位置については、選択して、区切り位置をクリック、「次へ」を2回押して、メニューから日付を選択して、完了とするのみです。
でもこれでは日付と認識されていないわけですものね。

本当にありがとうございました。

(かとけん) 2022/01/08(土) 11:14


 >でもこれでは日付と認識されていないわけですものね。 
 そんなことないと思いますけど?
 区切り位置でやれば、「2021/3/1」と手入力したのと全く同じ日付データに変換されるはずです。
「365」では仕様が変わったというのなら別ですけど・・・

 区切り位置かピボットテーブルか、どっちかの操作を間違えているのでは?

 ■ついでに・・・
 データは「20210301」のまま、数式で日付にするのなら

 =TEXT(A2,"0-00-00")*1 
 表示形式「日付」

 これでできますね。

 >=left(A2,4)&"/"&mid(A2,5,2)&"/"&right(A2,4))

 これだったら、RIGHT関数の文字数を「2」にして、全体を(  )で囲み
 それに「1」を掛ければ日付データ(シリアル値)になります。

 =(LEFT(A2,4)&"/"&MID(A2,5,2)&"/"&RIGHT(A2,2))*1
 表示形式「日付」

 以上、参考まで
(笑) 2022/01/08(土) 13:30

ありがとうございます。

>区切り位置かピボットテーブルか、どっちかの操作を間違えているのでは?
区切り位置の操作後には間違いなく、「日付」になっているのですが、ピボットをかけると、日付ではなくなってしまうんですよ。たぶん操作の問題ではないように思います。(間違えるような操作はないですし)

>全体を(  )で囲み1をかける
すごいですね。これだけのことで大丈夫になるのですね。

ありがとうございました。

(かとけん) 2022/01/08(土) 15:02


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.