dポイントプレゼントキャンペーン実施中!

一つのセルで2つ以上の意味とは、
まず数字、そしてセルに色をつける、網掛けをする、等考えられます。

あとで、2つ以上の意味を持つセルをその意味毎に集計するには、
どのようにしたらよいのでしょうか?

エクセル2007では、セルの色毎に集計できたりするらしいのですが、
未だに2003を使用しているので困っています。

例としては、
ある仕事に3時間かかった。それは朝、昼、夜の時間帯だった。
と、した時に、これを一つのセルで表すには、普通かかった時間数「3」に、
朝、昼、夜を表すのに、セルに色を付けるのが一般的かと思います。

それ以外に一つのセルに2つ以上意味を持たせることができるようにするには、
どのようにしたら良いのでしょうか?

A 回答 (5件)

ま、色々あるんでしょうね・・・(苦笑)



例えば・・・ですが、

3001
3002
3003

と入力して、セルの表示形式でユーザー設定にし、「#,」
とすれば、表示は

3
3
3

となるはずです。あとは、=LEFT(A1,1) で、右側の数字が
取得できますので、それを使って判断したり色付けしたり
できます。

3.1
3.2
3.3

などでも、セルの書式設定で「0」とすれば、全く同じ方法が
使えますよね。ま、邪道中の邪道ですから、シートのどこかに
「こんなふうにやってますよ」と書いておかないと・・・。
    • good
    • 0
この回答へのお礼

ありがとうございました。
参考にさせていただきます。

お礼日時:2012/04/09 14:17

元のご相談は


>それ以外に一つのセルに2つ以上意味を持たせることができるようにするには、
>どのようにしたら良いのでしょうか?

でしたが、結局言いたいことは「色を付けて集計したい。それ以外は受け付けられない(受け入れてもらえない)」ということなのですから、最初からそのように質問なさるべきだったようには思います。別にアナタが悪い訳じゃないのですから。



皆さんから回答がよせられているように、エクセルにはそういうことができる機能はありません。
なので、どうしてもというならマクロを使ってゴリゴリと自作で集計を行うようなことをする必要があります。

手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

function SumIfColor(byval target as excel.range, ref as excel.range) as double
 dim h as range
 application.volatile
 for each h in target
 if h.interior.colorindex = ref.interior.colorindex then
  SumIfColor = SumIfColor + val(h.value)
 end if
 next
end function

ファイルメニューから終了してエクセルに戻る


使い方:
いま仮にA1:C10のセル範囲に数字が記入してあるとする
それぞれのセルには朝昼夜の色が塗ってあったりなかったりする
とりあえずA1に朝の色が塗ってあるとする
C2には昼の色が塗ってあるとする
B4に夜の色が塗ってあるとする

朝の合計:
=SumIfColor(A1:C10,A1)
昼の合計:
=SumIfColor(A1:C10,C2)
夜の合計:
=SumIfColor(A1:C10,B4)
のように集計が求まる。


#重要な注意
セルの色を塗り替えた直後には、関数は自動で再計算されません。これはいかなる方法を採ってもできません。
セルの色を塗り替えた後は、かならずF9キーを押すなどして明示的に再計算を走らせて、正しい結果を表示させます。
    • good
    • 0
この回答へのお礼

ありがとうございました。
参考にさせていただきます。

お礼日時:2012/04/09 14:17

>…のが一般的かと思います。



いいえ。
一般的には,A列に朝昼晩を記入し,B列にそれぞれの3時間を記入するのが一般的なやり方です。

もっと言うなら,A列には日付,B列には開始時刻,C列には終了時刻のように「時間数を計算した根拠となる元のデータ」を記入し,さらにD列にはその日のうちの「午前中の作業時間」E列には「午後時間帯の作業時間」F列に「残業帯の作業時間」をそれぞれ計算し,集計するのが『一般的な』エクセルの使い方です。




とはいえ。
>それ以外に一つのセルに2つ以上意味を持たせることができるようにするには

今はご自分の思いに囚われて「とにかく一つのセルで」やってみたいご相談という事なので,例えば次のように細工することもできます。

例:
朝の3時間は1003という数字で記入する
昼の3時間は2003のように2千番台の数字で記入する
夜の3時間は3003のように3千番台の数字で記入する

こういった元データから1000番台の個数は
=COUNTIF(B:B,">=1000")-COUNTIF(B:B,">=2000")
1000番台の時間数の合計は
=SUMIF(B:B,">=1000")-SUMIF(B:B,">=2000")-(COUNTIF(B:B,">=1000")-COUNTIF(B:B,">=2000"))*1000
なんて言った具合に計算することもできます。



もちろんもっとメンドクサイ数式を組めば,「朝3」「昼3」「夜3」から計算を求めることも,やればできます。
が,通常はそんな尋常でないことはせず,最初にお話ししたように「列を分けてデータを素直に記入していく」という風に作成します。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
まあ、そうですね。

ただ、昔からの頭の固い上司が表の作りを変えるなというわけなんですよ。
そしてエクセルなどをわかったようなことを言われるわけですね。
そんでもって、根本の表の作り方を変更しようものならおしかりを受けるわけですね。
中間者はたまりません。

でも、まあ、データを翻訳というか、変換に次ぐ変換で、
実作業の効率化を図り、上司を満足させなければならず、
ほとほと困っています。

お礼日時:2012/04/06 15:39

通常、セル一つに一つの意味以上のものを持たせる、という


発想そのものが間違いです。挙げられた例で言えば、勤務
時間と時間帯は「別のセル」に持たせなくてはいけません。

複数の意味を持堪えると、後でこのデータを他に転用する時、
物凄く面倒なことになります。データはどういうものでも、後で
転用しやすいように考えておかなきゃいけません。

持たせたうえで、表示用に「色を付けて表示する」ってのが
正しいやり方です。そのためにExcelは複数のシートを持って
いるんですから・・・。

そのうえで・・・。

時間表示だけなら、日付データに何か違う意味を持たせて、
セルの表示を「時間」だけにする手があります。

2012/4/1 3:00 ならば「昼3時間」
2012/5/1 3:00 ならば「夜3時間」

などのやり方です。セルの表示形式を「h:mm」にすれば日付
は表示しませんからね。

昼夜の判断は例えば

=IF(MONTH(A1)=4,"昼","")

とかすればオッケー、MONTH関数とかで月なりなんなりを
チェックするだけで時間帯が分かります。

まあ、邪道中の邪道ですからね。これやっちゃうと、時間計算
するときに、要注意になりますから・・・。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
まあ、そうですね。
正しい使い方をしたいですね。

お礼日時:2012/04/06 15:41

朝3、昼3、夜3、としては?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
まあ、そうなんですが、実際には2つ以上、
つまり、3つや4つの場合もあるのです。

お礼日時:2012/04/06 15:08

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