激凹みから立ち直る方法

Excel2010グループ化のグループ化

こんにちは。

毎日の体重・体脂肪を記録するためにExcel2010を使用しています。

A列に日付(B列に体重・C列に体脂肪)を入れていますが、何年も日が経ち行が大きくなってきました。それなので月毎にグループ化をしてみました。例えば、行『2010年11月1日』の行の左側に『ボタン』(何と表現したらいいか分からないのですが、『正方形で囲まれた+』です。この質問では『ボタン』とさせて下さい。)を押すと行『11月1日』~行『30日』が表示されます。そしてA列にはそれぞれ左側にボタンを持った行『2011年1月1日』、行『2月1日』、行『3月1日』…行『12月1日』という12行に収めることが出来ました。

ここで、2011年を『2011年1月1日』という一つの行に収めたいと思いました。でしたので、行『2011年2月1日』~行『12月1日』までをドラッグして『グループ化』してみました。そうしたら行『2011年1月1日』の左側ににさっきのボタンがなくなり新たなボタンができ、『2011年1月』と『2011年12月』の2つの集団のグループ化が解けてしまい、『1月』と『12月』2つそれぞれの日にちが出現してしまいした。『2月』~『11月』は月ごとのグループ化を維持しています。そこで『2011年12月』は再グループ化が出来たのですが、『2011年1月』のグループ化が出来ませんでした。

このグループ化は可能でしょうか?(私の推測ではボタンのある行に新たなボタンは付けられないので無理であろうです。)

私の希望は、行『2011年1月1日』にある1つ目のボタンを押したら『1月』~『12月』の12行が表示され、同じ行『2011年1月1日』にあるもう1つのボタンを押したら『1月1日』~『31日』が展開され表示されるということです。

以上、拙い文章で読みにくいと思われると存じますが、何卒よろしくお願い申し上げます。

A 回答 (3件)

1.A1に2011年1月1日、順に日にちが入っているとします


 A1とA2の間に2行挿入、ここに2011年1月1日をコピーします  
 つまり2011年1月1日がA1、A2,A3と3行になります
2.2011年2月1日の行A34も同様にA34,A35と2行になるようにします
 以下12月まで各月1日を2行とします
3.1月1日の後ろの行A3から1月31日 A34を選択してグループ化します
4.以下12月まで同様にグループ化します
 +ボタンを押すとA1に2011年1月1日、A2に2011年1月1日、A34 2011年2月1日 ・・・
 と表示されるはずです、2月から12月まで同様にグループ化し+を押すと
 各月1日の行が表示されるはずです
5.A2の2011年1月1日から12月31日までを選択してグループ化+を押すと
 A1の2011年1月1日だけが表示されるはずです

これで月ごと、年ごとにグループ化されます
A列右の欄外のグループマークが3列できているはずです
エクセル2003ですが2010も同じでしょう

表示の問題で
 A1の書式設定をユーザー定義 yyyy”年”  とすると2011年と表示します
 A2の書式設定をユーザー定義 m”月”  とすると1月と表示します、以下同様
    • good
    • 0
この回答へのお礼

acha51さん、

ご回答ありがとうございます。acha51さんのやり方がお三方の中で一番無難でした。

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

お礼日時:2012/03/01 04:51

1つの行にボタンを2つ持たせる事は出来ません。




11月1日の行の「一つ前の行」に「2011年11月」とだけ書いた行を挿入してその行を11月のアタマとし,その行には11月の集計値を「SUBTOTAL関数を使って」計算して入れておく

1月1日の行の一つ前に記入した「2011年1月」の行の,更に一つ前の行に「2011年」を用意し,それを2011年の行全体のアタマとして,その行には2011年全体の集計値をやはりSUBTOTAL関数を使って計算して入れておく


といった作り方をする事になります。
    • good
    • 0
この回答へのお礼

keithinさん、

ご回答ありがとうございます。何で1行にボタンを複数作れないのですかね?別段問題はないと感じますが。

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

お礼日時:2012/03/01 04:54

次のようにすることで関数を使うことでお望みのデータを表示させるようにしてはどうでしょう。


例えばシート1には従来からのデータがありA2セルから下方には日付が、B2セルから下方には体重が、C2セルから下方には体脂肪が入力されているとします。
そこでお望みの表ですがシート2に表示させるとしてA1セルには月毎のデータとでも入力しA2セルには表として出したい最も古い年月を例えば2009/11/1のように入力します。セルの表示形式をユーザー定義で yyyy/mmのようにしてもよいでしょう。
そこでA3セルには次の式を入力して下方にオートフィルドラッグコピーします。

=IF(DATE(YEAR($A$2),MONTH($A$2)+ROW(A1)-1,1)>MAX(Sheet1!$A:$A),"",DATE(YEAR($A$2),MONTH($A$2)+ROW(A1)-1,1))

A列のセルの表示形式はユーザー定義でyyyy/mmのようにします。

B3セルには次の式を入力してC3セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。

=IF(OR($A3="",COLUMN(A1)>2),"",INDEX(Sheet1!$B:$C,IF($A3<MIN(Sheet1!$A:$A),2,IF(COUNTIF(Sheet1!$A:$A,$A3),MATCH($A3,Sheet1!$A:$A,0),MATCH($A3,Sheet1!$A:$A,1)+1)),COLUMN(A1)))

これでA2セルで指定した後の月毎のデータ(1日がればその日なければその月の初めの日のデータ)が表示されます。

次に望みの月における日ごとのデータですが次のようにします。
シート2のF1セルには日ごとのデータとでも入力し、F2セルには日ごとに表示したい年月日を2012/1/1のように入力しセルの表示形式のユーザー定義でyyyy/mのようにすればよいでしょう。
F3セルには次の式を入力して下方にオートフィルドラッグコピーします。

=IF(OR(F$2="",MONTH(F$2)<>MONTH(DATE(YEAR(F$2),MONTH(F$2),ROW(A1)))),"",DATE(YEAR(F$2),MONTH(F$2),ROW(A1)))

セルの表示形式はユーザー定義で d のようにします。
G3セルには次の式を入力してH3セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。

=IF(OR(COLUMN(A1)>2,COUNTIF(Sheet1!$A:$A,$F3)=0,$F3>MAX(Sheet1!$A:$A)),"",INDEX(Sheet1!$B:$C,MATCH($F3,Sheet1!$A:$A,0),COLUMN(A1)))

これで指定された年月におけるデータが日日ごとに表示されます。
    • good
    • 0
この回答へのお礼

KURUMITOさん、

ご回答ありがとうございます。ご提示のやり方で出来ました。

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

お礼日時:2012/03/01 04:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報