- ベストアンサー
エクセルの一つのセルで2つ以上の意味を持たせる方法とは?
- エクセルの一つのセルで2つ以上の意味を持たせる方法とは、数字を表示させるだけではなく、セルの色や網掛けなどを使用することが考えられます。
- 2つ以上の意味を持つセルを意味毎に集計する方法は、エクセル2007ではセルの色毎に集計できますが、2003ではそれはできません。
- 具体例として、ある仕事に3時間かかったという情報を一つのセルで表す場合、時間数を数字で表示し、朝、昼、夜をセルの色で表示するという方法が一般的ですが、他にも2つ以上の意味を持たせる方法があるのか疑問です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ま、色々あるんでしょうね・・・(苦笑) 例えば・・・ですが、 3001 3002 3003 と入力して、セルの表示形式でユーザー設定にし、「#,」 とすれば、表示は 3 3 3 となるはずです。あとは、=LEFT(A1,1) で、右側の数字が 取得できますので、それを使って判断したり色付けしたり できます。 3.1 3.2 3.3 などでも、セルの書式設定で「0」とすれば、全く同じ方法が 使えますよね。ま、邪道中の邪道ですから、シートのどこかに 「こんなふうにやってますよ」と書いておかないと・・・。
その他の回答 (4)
- keithin
- ベストアンサー率66% (5278/7941)
元のご相談は >それ以外に一つのセルに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キーを押すなどして明示的に再計算を走らせて、正しい結果を表示させます。
お礼
ありがとうございました。 参考にさせていただきます。
- keithin
- ベストアンサー率66% (5278/7941)
>…のが一般的かと思います。 いいえ。 一般的には,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」から計算を求めることも,やればできます。 が,通常はそんな尋常でないことはせず,最初にお話ししたように「列を分けてデータを素直に記入していく」という風に作成します。
お礼
ご回答ありがとうございました。 まあ、そうですね。 ただ、昔からの頭の固い上司が表の作りを変えるなというわけなんですよ。 そしてエクセルなどをわかったようなことを言われるわけですね。 そんでもって、根本の表の作り方を変更しようものならおしかりを受けるわけですね。 中間者はたまりません。 でも、まあ、データを翻訳というか、変換に次ぐ変換で、 実作業の効率化を図り、上司を満足させなければならず、 ほとほと困っています。
- FEX2053
- ベストアンサー率37% (7991/21371)
通常、セル一つに一つの意味以上のものを持たせる、という 発想そのものが間違いです。挙げられた例で言えば、勤務 時間と時間帯は「別のセル」に持たせなくてはいけません。 複数の意味を持堪えると、後でこのデータを他に転用する時、 物凄く面倒なことになります。データはどういうものでも、後で 転用しやすいように考えておかなきゃいけません。 持たせたうえで、表示用に「色を付けて表示する」ってのが 正しいやり方です。そのためにExcelは複数のシートを持って いるんですから・・・。 そのうえで・・・。 時間表示だけなら、日付データに何か違う意味を持たせて、 セルの表示を「時間」だけにする手があります。 2012/4/1 3:00 ならば「昼3時間」 2012/5/1 3:00 ならば「夜3時間」 などのやり方です。セルの表示形式を「h:mm」にすれば日付 は表示しませんからね。 昼夜の判断は例えば =IF(MONTH(A1)=4,"昼","") とかすればオッケー、MONTH関数とかで月なりなんなりを チェックするだけで時間帯が分かります。 まあ、邪道中の邪道ですからね。これやっちゃうと、時間計算 するときに、要注意になりますから・・・。
お礼
ご回答ありがとうございました。 まあ、そうですね。 正しい使い方をしたいですね。
- aokii
- ベストアンサー率23% (5210/22062)
朝3、昼3、夜3、としては?
お礼
ご回答ありがとうございました。 まあ、そうなんですが、実際には2つ以上、 つまり、3つや4つの場合もあるのです。
お礼
ありがとうございました。 参考にさせていただきます。