月を変えると曜日が変わる様にしているのですが、
同じく月を変えると、シフトが変わる様にしたいのですが
解かりません。
ご解答いただければ大変有り難いです。
シフトそれぞれ、BBAAとなっています。
宜しくお願いいたします。

「勤務シフト表の作り方」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (7件)

回答No2,3,4です。


日曜日のセルを赤色にするのでしたらC9セルからAG9セルの範囲を選択してから「条件付き書式」の設定で「数式を・・」を選択し、数式の窓には次の式を入力します。その後に同じ画面の「書式」をクリックし、「塗りつぶし」のタブから赤色を指定してOKします。

=WEEKDAY(DATE($A5,$A8,C8))=1

曜日を調べるにはWEEKDAY関数を使います。1が日で、2が月、3が火・・のようになります。
    • good
    • 0
この回答へのお礼

シフト表は全て完成致しました。

他の回答者さんからは、質問の仕方が悪いと指摘されましたが、
訳の解からない質問に対し度々ご丁寧にお答え頂いて、心から感謝
致します。

本当に有難う御座いました。

☆KURUMITO様にいつも平和があり、
 実り多き素敵な毎日でありますように。

失礼致します。

お礼日時:2011/04/14 13:25

C9セルからAG9セルを範囲として選択したのちに条件付き書式の設定で、数式の窓には次の式でもよいですね。



=C9="日"
    • good
    • 0

 将来、シフトの繰り返しが6日周期ではなくなる事も考えて、御質問の表とは僅かに形式を変更して、適当なセル(例えばE5セル)にシフトの周期を



6

と入力する事にします。
 又、以下の方法は、途中で名前の順番が変わったり、辞める人間がいたり、新人が入って来た場合でも対応しています。

 まず、F5セルに「日周期」と入力して下さい。
 次に、A8:A9、A10:B10、A11:B11、A12:B12、A13:B13、A14:B14を、それぞれ結合して下さい。
 次に、A8セルの書式設定を[ユーザー定義]の

0"月"

として下さい。
 次に、C8~AG8セルの書式設定を[ユーザー定義]の

d

として下さい。
 次に、A8~A13セルに各勤務者の名前を、A14セルに「備考」と入力して下さい。
 次に、C8セルに次の数式を入力して下さい。

=IF(ISNUMBER(($A$5+($A$8>$A8)&"/"&$A8&"/"&COLUMNS($C:C))+0),DATE($A$5+($A$8>$A8),$A8,COLUMNS($C:C)),"")

 次に、C9セルに次の数式を入力して下さい。

=TEXT(C8,"aaa")

 次に、C10セルに次の数式を入力して下さい。

=IF(ISNUMBER($E$5),IF(AND($A10<>"",$E$5>1,INT($E$5)=$E$5,ISNUMBER(($A$5+(VLOOKUP(9^9,$A$8:$A10,1)<$A$8)&"/"&VLOOKUP(9^9,$A$8:$A10,1)&"/"&COLUMNS($C:C))+0),OR(COUNTIF($A$8:$A10,$A10)>1,COUNTIF($A10:B10,"><")>1)),VLOOKUP($A10,INDEX($A:$A,MATCH(MONTH(VLOOKUP(9^9,C$8:C9,1)-$E$5),$A:$A,0)):$AG10,DAY(VLOOKUP(9^9,C$8:C9,1)-$E$5)+COLUMNS($A:$B),0)&"",""),"")

 次に、C10セルをコピーして、C11~C13の範囲に貼り付けて下さい。
 次に、C8~C14の範囲をコピーして、D8~AG14の範囲に貼り付けて下さい。
 次に、A8~AG14の範囲に枠線の設定をして下さい。
 次に、AE8セルにカーソルを合わせて、マウスの左ボタンを押しっ放しにし、そのままカーソルをAG14セルまで移動させてから、ボタンを放して下さい。
 その状態で、次の条件付き書式を設定して下さい。

数式

=ISERROR(($A$5+(VLOOKUP(9^9,$A$8:$A8,1)<$A$8)&"/"&VLOOKUP(9^9,$A$8:$A8,1)&"/"&COLUMNS($C:AE))+0)

書式:[罫線]タグにおいて、[なし]ボタンをクリック


 次に、A8~AG14の範囲をコピーして、A17~AG23の範囲に貼り付けて下さい。
 次に、A17セルに次の数式を入力して下さい。

=IF(ISNUMBER(("1904/"&VLOOKUP(9^9,$A$8:$A16,1)&"/1")+0),MONTH(DATE(1904,VLOOKUP(9^9,$A$8:$A16,1)+1,1)),"")

 次に、A17~AG25の範囲をコピーして、同じ列の26行目以下に、10回貼り付けて下さい。


 次に、E5セルに

6

と入力して下さい。
 次に、A5セルに

2011

と入力して下さい。
 次に、A8セルに

4

と入力して下さい。
 次に、C10~H13の数式を一旦消去し、4月1日~4月6日の、各勤務者のシフトをキーボード入力して下さい。
 すると、一年間のシフトが表示されます。

 なお、途中で新人が入る場合には、勤務者の名前とシフトが表示されている行の中から適当な行をコピーして、新人が初めて入る月以降の表中に、[コピーしたセルの挿入]を使用して挿入し、名前を書き換えてた上で、その行における、新人が初めてシフトに入る6日間の部分の数式を削除し、替わりにその6日間のシフトをキーボード入力して下さい。
 例えば、この回答の添付画像では、6月15日から佐々木さんがシフトに加わるため、6月からの表において、月の行数が1行増えるとともに、名前を「あいうえお順」に整理し直しています。
「勤務シフト表の作り方」の回答画像5
    • good
    • 0

C9セルへの入力の式が抜けていました。

次のような式になります。

=IF(C8="","",TEXT(DATE($A$5,$A$8,COLUMN(A1)),"aaa"))
    • good
    • 0

回答No2です。



=MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)

A8セルが4の時はC25セルは0ですね。C25には上の式を入力してからC25セルを選択してセルの右下隅にカーソルを移しますとポインタの形が+になりますので左ボタンを押しながら右横方向にドラッグするのですよ。もちろん式からわかるようにA5セルに西暦年、A8には月がC8から右横のセルには日付が入力されていることが必要です。

ついでに示しますが、C8には次の式を入力して右横方向にオートフィルドラッグします。

=IF(MONTH(DATE($A$5,$A$8,COLUMN(A1)))<>$A$8,"",TEXT(DATE($A$5,$A$8,COLUMN(A1)),"d"))

これで指定の月の末日までが表示されます。上の式では7行目の式は必要としません。
C9セルには次の式を入力して右横方向にオートフィルドラッグします。
    • good
    • 0

別のところでお答えしていますが次のようです。



前回のご質問にお答えした内容を十分にご理解できなかったことは残念に思います。
お示しの表のとおりのセル番号でお答えします。
田中、鈴木、和田などのシフトを考えるにあたってMOD関数を使うことが重要でそれをまず理解することです。
そのためにC25セルには次の式を入力して右横方向にオートフィルドラッグしてみてください。この操作は理解をしやすくするために行うもので実際には入力して表示させる必要もありません。

=MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)

ここではもちろん表の上での日付は既に入力されていることが必要です。また、シフト表の基準となるのはこの場合には2011年4月のシフト表を基としています。2011年4月1日からカレンダーの日付を引いた値を6で割った時の余りの数が表示されます。0から5までの数が繰り返して表示されますね。この関係は月が変わっても引き継がれるものです。
そこで田中の場合にBがあるのはMODの値が1と2であること、また、Aがあるのは3と4の場合であることがわかります。鈴木の場合も和田の場合も同様にMODの値との関係を把握することが必要です。

そこで答えとなる式ですが、C10セルには次の式を入力して右横方向にオートフィルドラッグします。

=IF(C$8="","",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=1,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=2),"B",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=3,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=4),"A","")))

C11セルには次の式を入力して右横方向にオートフィルドラッグします。

=IF(C$8="","",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=5,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=0),"B",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=1,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=2),"A","")))

C12セルには次の式を入力して右横方向にオートフィルドラッグします。

=IF(C$8="","",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=3,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=4),"B",IF(OR(MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=5,MOD(DATE($A$5,$A$8,C$8)-DATE(2011,4,1),6)=0),"A","")))

C13セルには和田と井上は同じパターンですから上の式と同じになりますね。

別の月でも同じような式を入力すればよいでしょう。例えばC20セルには次の式を入力します。

=IF(C$8="","",IF(OR(MOD(DATE($A$5,$A$18,C$18)-DATE(2011,4,1),6)=1,MOD(DATE($A$5,$A$18,C$18)-DATE(2011,4,1),6)=2),"B",IF(OR(MOD(DATE($A$5,$A$18,C$18)-DATE(2011,4,1),6)=3,MOD(DATE($A$5,$A$18,C$18)-DATE(2011,4,1),6)=4),"A","")))


投稿日時 - 2011-04-13 07:44:27

.

この回答への補足

何度もご回答大変ありがとうございました。

いちから作り直して、ご回答頂いた通り入力して出来上がりました。

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

ついでと言ってはなんなんですが、日曜日だけ色をつけたいのですが
各サイトを探してやってみても、これまた上手くいきません。
お時間がある時にでも、ご回答頂けると幸いです。

すみません。

補足日時:2011/04/13 17:26
    • good
    • 0

それだけの情報では無理。



ですが、曜日なら次の関数式を入力すれば可能です。
 =TEXT(DATE(年,月,日),"aaa")
年、月、日にはそれぞれ対応する数値を参照させる。
 A1セルに年
 B1セルに月
 B2セルから横方向に日
を示す数値が入力されているなら
 =TEXT(DATE(A1,B1,B2),"aaa")
で、数値が示す日付の曜日が漢字一文字で表示されます。

 ※ TEXT関数と、DATE関数の詳細は Excel のヘルプを参照してください。詳しく書いてありますよ。

残念ですが、あとは職場で Excel の扱いに慣れている人に相談しましょう。
でないと文面を見る限りここでの解決は無理だろうと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/13 20:25

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qlenovoタブレット android5.1 と 5.1.1

ご存知の方、教えてください。

格安SIMを使ったタブレットが調子が悪いので、端末を買い替えようと思っています。

現在OCNモバイルONEですので、モバイルONEのHPから動作確認済み端末をみて、
lenovo yoga タブレット 3 10を購入しようと考えています。

ところがOCNの動作確認済み端末の表には、OSがandroid5.1.1となっていました。
一方lenovoや量販店のHPをみても、android5.1.1の記載はありません。
すべてandroid5.1です。

OCNのコールセンタに問い合わせたところ、
「動作確認した端末はandroid5.1.1であった。それ以上のことはわからない。」

と言われました。

・なぜこのようなことになっているのか?

・android5.1 でも 5.1.1 でも格安SIMは問題なく使えるのか。

教えていただければありがたく思います。
よろしくお願いいたします。

Aベストアンサー

>android5.1 でも 5.1.1 でも格安SIMは問題なく使えるのか

使えます。(Windows8→Windows8.1→Windows8.1Update版のようなもの)
但しメーカーのサイトに「注:すべてのカードの動作を保証するものではありません」とあります。

「SIMスロット:なし」→SIMカードをどこに入れるの?
http://www.lenovo.com/jp/catalog/tablet/2015/yogat3_10_rt_1027.html

>なぜこのようなことになっているのか?

androidのOSメーカーがバージョンアップで5.1.1を出しても、モバイル機種メーカーやユーザーが5.1から5.1.1にバージョンアップするとは限りません。
「OSは出荷時期によってバージョンが変更されている場合があります」とあります。

YOGA Tab 3 10 ZA0J0005JP SIMフリー のスペック・仕様・特長
SIM情報:SIMフリー (micro-SIM) ←対応している
http://kakaku.com/item/K0000824208/spec/

>android5.1 でも 5.1.1 でも格安SIMは問題なく使えるのか

使えます。(Windows8→Windows8.1→Windows8.1Update版のようなもの)
但しメーカーのサイトに「注:すべてのカードの動作を保証するものではありません」とあります。

「SIMスロット:なし」→SIMカードをどこに入れるの?
http://www.lenovo.com/jp/catalog/tablet/2015/yogat3_10_rt_1027.html

>なぜこのようなことになっているのか?

androidのOSメーカーがバージョンアップで5.1.1を出しても、モバイル機種メーカーやユーザーが5.1から5.1...続きを読む

Qエクセル2007で時間帯勤務状況の分かるシフトを作っています(1日1シ

エクセル2007で時間帯勤務状況の分かるシフトを作っています(1日1シート)
現在5分単位で稼働人数の分かる以下のようなシフトを作っています。
A2~20 氏名
B2~20 出勤時間
C2~20 退勤時間
E1~FE1 8:00~21:00までの5分刻みの時刻
E2~FE2 =IF(AND($B2<=E$1,$C2>E$1),"■","") の関数を利用し勤務時間に■を表示させる

この表に休憩時間を追加したいと考えております
休憩時間は10パターンあり
パターン1:10:00~10:15,12:00~13:00,15:00~15:15
パターン2:10:15~10:30,12:30~13:30,15:15~15:30
このように、一日の内に3回の休憩時間があります。
この休憩時間を上記のシフト内のDにプルダウンで選択させ
該当する時間に”□”を表示させることは可能でしょうか?
また、不可能な場合他に良い方法はありますでしょうか
時間別に稼働人数を出したいので、塗りつぶし等関数でカウントができないものは考えておりません

お手数ですが、お力をお貸しください。

エクセル2007で時間帯勤務状況の分かるシフトを作っています(1日1シート)
現在5分単位で稼働人数の分かる以下のようなシフトを作っています。
A2~20 氏名
B2~20 出勤時間
C2~20 退勤時間
E1~FE1 8:00~21:00までの5分刻みの時刻
E2~FE2 =IF(AND($B2<=E$1,$C2>E$1),"■","") の関数を利用し勤務時間に■を表示させる

この表に休憩時間を追加したいと考えております
休憩時間は10パターンあり
パターン1:10:00~10:15,12:00~13:00,15:00~15:15
パターン2:10:15~10:30,12:30~13:...続きを読む

Aベストアンサー

時間の表示は同じでもシリアル数では合わない場合もありますので、なかなか難しいですね。
次のようにして、時間と分をプラスして分で統一して比較することでやっと解決できました。
表はご提案のとおりとしてパターンについてはその番号をA25から下行に1から20までA44セルまでに入力し、例えば1のパターンではA25セルに1、B25セルに10:00,C25セルに10:15,D25セルに12:00,E25セルに13:00,F25セルに15:00,G25セルに15:15のように入力するとします。
そこで、D2セルから下方にはパターンの番号、例えばD2セルに1と入力します。
E2セルには次の式を入力してFE2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。

=IF(COUNT($B2:$D2)<>3,"",IF(OR(AND(HOUR(E$1)*60+MINUTE(E$1)>=HOUR(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),2))*60+MINUTE(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),2)),HOUR(E$1)*60+MINUTE(E$1)<HOUR(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),3))*60+MINUTE(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),3))), AND(HOUR(E$1)*60+MINUTE(E$1)>=HOUR(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),4))*60+MINUTE(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),4)),HOUR(E$1)*60+MINUTE(E$1)<HOUR(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),5))*60+MINUTE(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),5))),AND(HOUR(E$1)*60+MINUTE(E$1)>=HOUR(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),6))*60+MINUTE(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),6)),HOUR(E$1)*60+MINUTE(E$1)<HOUR(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),7))*60+MINUTE(INDEX($A$25:$G$45,MATCH($D2,$A$25:$A$45,0),7)))),"□",IF(AND($B2<=E$1,$C2>E$1),"■","")))

時間の表示は同じでもシリアル数では合わない場合もありますので、なかなか難しいですね。
次のようにして、時間と分をプラスして分で統一して比較することでやっと解決できました。
表はご提案のとおりとしてパターンについてはその番号をA25から下行に1から20までA44セルまでに入力し、例えば1のパターンではA25セルに1、B25セルに10:00,C25セルに10:15,D25セルに12:00,E25セルに13:00,F25セルに15:00,G25セルに15:15のように入力するとします。
そこで、D2セルから下方には...続きを読む

Q日産LEAFでandroidスマホをオーディオとして使えますか?

日産LEAFのナビ(EV専用カーウイングスナビゲーションシステム)で現在iPhone4をオーディオ代わりに使っています。

iPhoneを別途使う必要が生じたため、iPodを物色していたのですが、希望の32GB以上となるとtouchクラスになり、そう安くありません。

ならいっそのこと、androidスマホの中古を買って、前から試してみたかったLeaf Spy(android2.0以降)も導入してしまおうかと思いつきました。

しかし、日産のホームページを見ても、iPodの対応表はあるのですが、andoridスマホが使えるかどうかは載っていません。

どなたか実際に試していらっしゃる方、どの機種なら使えたといった情報よろしくお願いします。

Aベストアンサー

最大限の機能を使うのであればiPhoneやiPodの方が公式サポートもされていますし、おススメなのですが…
Bluetooth対応機種でしたら、ハンズフリーはAndroidでも可能かと思います。
ですが、ダイレクトで繋ぐわけではないのでオーディオ再生はできない可能性の方が高いですね;

お近くの日産へ行き、確かめる方がいいかもしれません。
また、修理なども受け付ける店舗ですと、在庫があればAndroid用のケーブル等も用意している場合がありますので、大き目の店舗に行かれるのがいいかと思います。

ちなみに、アプリも色々な機能があるようです。
http://www.nissan.co.jp/EVENT/APPLI/

オーディオのみの用途でしたら、USBメモリーでも対応していますのでこれが一番安上がりかと思います。

QExcel2007 曜日によって別のセルの色を変え

いつもお世話になり有難うございます。

表題が途中で入れていますが、日付を入力した時に、別のセルの色が変わるようにしたいのですが可能でしょうか。
先日http://okwave.jp/qa/q8063467.htmlにて質問させていただき無事解決したのですが、更に社内で要望があり、調べ方が悪いのか、どうしてもわからなかったためこちらで質問させていただきます。

●シフト表を作っています。
●日付を入力したら、その日営業している時間帯のセルだけに色をつけたいのですが、
●月曜~土曜(10時~21時)、日曜・祝日(10時~20時)、祝前日(10時~21時)の3パターンで営業時間が異なります。
●曜日ごとなら可能だと思うのですが、祝日判定がちょっとやっかいかもしれません。
●でも可能ならやり方を、もしくは参考になるサイトをお教えいただけませんでしょうか。

何卒よろしくお願いします。

Aベストアンサー

以下の日本の祝日の一覧を利用してみてkください。
https://sites.google.com/site/nipponnoshukujitsuichiran/

QAndroidアプリの開発について

アンドロイドアプリ開発の勉強をしておりますが
全くの素人のためご教授願います。


以下で、氏名1を選択すると、勤務表が表示されるのですが
スクロールされずに悩んでおります。

自分なりに調べてみると
XMLでScrollViewの中にTextViewを入れれば
スクロールされるようなのですが、うまくスクロールされません。

どのように記述すれば、スクロールされるのでしょうか?


以上、宜しくお願いいたします。




package test.kintai;

/**import java.nio.charset.Charset; */

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.TextView;

public class kintai extends Activity implements DialogInterface.OnClickListener{
/** Called when the activity is first created. */
public AlertDialog _alertDialog;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

public void onResume(){
super.onResume();
CharSequence[] _char = {"氏名1","氏名2","氏名3","氏名4","氏名5","氏名6","氏名7"};
_alertDialog = new AlertDialog.Builder(this)
.setTitle("勤務表")
.setCancelable(false)
.setItems(_char, this).show();
}

@Override
public void onClick(DialogInterface dialog, int which) {
setContentView(R.layout.main);

if(_alertDialog == dialog){
TextView display = new TextView(this);
switch(which){
case 0:
display.setText("氏名1\n" +
"\n" +
"2011年4月\n" +
"\n" +
" 1日(日) 休\n" +
" 2日(月) 夜勤\n" +
" 3日(火) 休\n" +
" 4日(水) 休\n" +
" 5日(木) 休\n" +
" 6日(金) 夜勤\n" +
" 7日(土) 休\n" +
" 8日(日) 休\n" +
" 9日(月) 日勤\n" +
"10日(火) 日勤\n" +
"11日(水) 日勤\n" +
"12日(木) 日勤\n" +
"13日(金) 夜勤\n" +
"14日(土) 休\n" +
"15日(日) 休\n" +
"16日(月) 日勤\n" +
"17日(火) 日勤\n" +
"18日(水) 日勤\n" +
"19日(木) 日勤\n" +
"20日(金) 夜勤\n" +
"21日(土) 休\n" +
"22日(日) 休\n" +
"23日(月) 日勤\n" +
"24日(火) 日勤\n" +
"25日(水) 日勤\n" +
"26日(木) 日勤\n" +
"27日(金) 夜勤\n" +
"28日(土) 休\n" +
"29日(日) 休\n" +
"30日(月) 日勤\n" +
"31日(火) 日勤\n");
break;
case 1:
display.setText("氏名2");
break;
case 2:
display.setText("氏名3");
break;
case 3:
display.setText("氏名4");
break;
case 4:
display.setText("氏名5");
break;
case 5:
display.setText("氏名6");
break;
case 6:
display.setText("氏名7");
break;

}
setContentView(display);
}

}

}






---------------
■main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>

</ScrollView>



</LinearLayout>

アンドロイドアプリ開発の勉強をしておりますが
全くの素人のためご教授願います。


以下で、氏名1を選択すると、勤務表が表示されるのですが
スクロールされずに悩んでおります。

自分なりに調べてみると
XMLでScrollViewの中にTextViewを入れれば
スクロールされるようなのですが、うまくスクロールされません。

どのように記述すれば、スクロールされるのでしょうか?


以上、宜しくお願いいたします。




package test.kintai;

/**import java.nio.charset.Charset; */

import android.app.Activi...続きを読む

Aベストアンサー

onClickメソッドの最後で
setContentView(display);
とやっているので、XMLの設定を TextViewで置き換えてしまっています。

以下のようにすればうまくいきますよ。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
public void onClick(DialogInterface dialog, int which) {
if(_alertDialog == dialog){
TextView display = (TextView)findViewById(R.id.display);
switch(which){
~省略~
}
}
}

QExcel2007 曜日によって別のセルの色を変え

いつもお世話になり有難うございます。

昨日質問させていただきましたが、質問の仕方が下手糞なため、もう一度よく整理して再質問させていただきます。

なお、前回忙しい中回答していただいた皆様には、私の頭がアホなためこのようなことになり申し訳ありません。何卒お許しください。

昨日(http://oshiete.goo.ne.jp/qa/8082698.html?by=datetime&order=ASC)にて皆様に回答いただき、自分なりに頑張ってみたのですが、
画像にある通りA列に日付、B列に氏名、D9:AE9は時間で、その下にそれぞれ働く時間の箇所に色を塗っています。(赤が勤務、黄が休憩)
シフトを組む際に、曜日によって営業時間が異なるのですが、営業する時間帯をD9:AE9の箇所に色を塗りたいのです。(画像では10時から21時までが営業)
(営業時間は月曜~土曜が10時から21時、日曜祝日が10時から20時、祝前日が10時から21時)

管理用シートには別表で2013/1/1~2013/12/31までの表があり、「営業時間判定」という列に月曜~土曜と祝前日の10時から21時までの営業の日には「1」、日曜祝日の10時から20時までの営業の日に「0」と入力した表を作成しました。

具体的に頭の中で考えているイメージですが、
●A9の日付と管理用シートにある別表の日付を紐付けし、
●管理用シートの別表にある「営業時間判定」が「1」の場合は画像のF9:AA9のセルに色を付け、
●同じく「0」だった場合はF9:Y9のセルに色を付ける
という手順が簡単ではないかと思うのですが、このような場合はどのようにすればいいのでしょうか?

恐れ入りますがよろしくお願いいたします。

いつもお世話になり有難うございます。

昨日質問させていただきましたが、質問の仕方が下手糞なため、もう一度よく整理して再質問させていただきます。

なお、前回忙しい中回答していただいた皆様には、私の頭がアホなためこのようなことになり申し訳ありません。何卒お許しください。

昨日(http://oshiete.goo.ne.jp/qa/8082698.html?by=datetime&order=ASC)にて皆様に回答いただき、自分なりに頑張ってみたのですが、
画像にある通りA列に日付、B列に氏名、D9:AE9は時間で、その下にそれぞれ働く時間の箇所...続きを読む

Aベストアンサー

言い忘れましたが、INDIRECT 関数が読み取っている「管理用シート!$A2:$B366」という文字列で特定されるセル範囲に「名前」というものを登録し、その名前で条件式を書くという方法もあります。この方法のメリットは、短い日本語などの言葉と簡単な書式で数式が書け、管理しやすくなる上、行列番号のミスによる参照エラーもしにくくなることです。設定の方法は、前回のご質問で皆さんが回答されているとおりです。


>……マクロ(?)を使用して選択した場所にこの雛形の表を貼り付けするようにしています。


このご質問で作られた表を、ということでしょうか?

そうであれば、マクロのコードにおいて貼り付け方法がどうなっているかにもよりますが、表のセル範囲のプロパティ全てを丸ごとコピペしているのだとすれば、マクロの実行前に No.3 の条件式をちょっとだけ書き換えておくことによって、実行後にコピー先でも意図したとおりに条件付き書式が設定されているようにできるかもしれませんね。

AB9
 =vlookup(A9,indirect("管理用シート!$A2:$B366"),2,)  ……最初の「$」を削除

このセルをコピーして AC9 に貼り付け後、AC9 の 21(時)をクリア。条件付き書式の「ルールの管理」で見ると、AC9 には次式が適用されています。

 =vlookup(B9,indirect("管理用シート!$A2:$B366"),2,)

これが AB9 での式と同一のものになるよう修正。つまり「B9」→「A9」と書き換え。その後、マクロによるコピーを実行します。丸ごとのコピーなら、これでうまく行くかと。


あるいは、元の表の条件は修正せずに、マクロによる貼り付けの後で手動で修正するという方針なら、次のような。例えば、AB100 セルに表を貼り付けると、日付も AB100 に入力されている状況になるが、条件式の VLOOKUP 関数は「$」の効果で A100 を参照しています。それを条件付き書式の「ルールの管理」にて、次式に修正。

AB9:AC9
 =vlookup($AB100,indirect("管理用シート!$A2:$B366"),2,)


上の 2 案のほか、マクロでコピーする際に条件付き書式を併せて設定し直すことももちろん可能ですが、具体的なコードを見ないと有益なアドバイスは難しいです。それについて質問される場合、このご質問は締め切って、新たなご質問としてコードとともに投稿されるようしてください。

この言っている意味も分からないという場合は、まずは Excel のマクロがどんなものか、検索などでさわりだけでもお調べになることをお勧めします。

言い忘れましたが、INDIRECT 関数が読み取っている「管理用シート!$A2:$B366」という文字列で特定されるセル範囲に「名前」というものを登録し、その名前で条件式を書くという方法もあります。この方法のメリットは、短い日本語などの言葉と簡単な書式で数式が書け、管理しやすくなる上、行列番号のミスによる参照エラーもしにくくなることです。設定の方法は、前回のご質問で皆さんが回答されているとおりです。


>……マクロ(?)を使用して選択した場所にこの雛形の表を貼り付けするようにしています。


この...続きを読む

QAndroid開発(Listview)について

Androidアプリ開発における
listviewについて質問させてください。

以下で、東京都,神奈川県,千葉県,埼玉県,茨城県,栃木県,群馬県と表示されています。

東京をクリックしたら、新宿、上野、秋葉原
千葉をクリックしたら、千葉、市川、船橋
といったように、さらに地域を絞っていきたいと考えています。

どのような方法で、実現できるか
アドバイスして頂けると助かります。



■searchActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;


public class searchActivity extends Activity {
private ListView list;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
String[] arr = {"東京都","神奈川県","千葉県","埼玉県","茨城県","栃木県","群馬県"};

// コンポーネントの設定
list = (ListView)this.findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, arr);
list.setAdapter(adapter);
}
}


■main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="20sp"
android:background="#ffffff"

>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>



■list.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="20sp"
android:paddingTop="50.0px"
android:paddingLeft="20.0px"
android:background="#ffffff"
android:textColor="#000000"

/>






以上、宜しくお願いいたします。

Androidアプリ開発における
listviewについて質問させてください。

以下で、東京都,神奈川県,千葉県,埼玉県,茨城県,栃木県,群馬県と表示されています。

東京をクリックしたら、新宿、上野、秋葉原
千葉をクリックしたら、千葉、市川、船橋
といったように、さらに地域を絞っていきたいと考えています。

どのような方法で、実現できるか
アドバイスして頂けると助かります。



■searchActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;


...続きを読む

Aベストアンサー

ザックリとですが、こんな感じでやればよいと思いますよ。

■searchActivity.java(変更点)
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
String[] arr = {"東京都","神奈川県","千葉県","埼玉県","茨城県","栃木県","群馬県"};

// コンポーネントの設定
list = (ListView)this.findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, arr);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
setList2(arg3);
}
});
}

private void setList2(long id) {
String[] tokyo = {"新宿","上野","秋葉原"};
String[] chiba = {"千葉","市川","船橋"};

ArrayAdapter<String> adapter = null;
switch ((int)id) {
case 0:
adapter = new ArrayAdapter<String>(this, R.layout.list, tokyo);
break;
case 2:
adapter = new ArrayAdapter<String>(this, R.layout.list, chiba);
break;
}
list.setVisibility(View.GONE);

ListView list2 = (ListView)this.findViewById(R.id.list2);
list2.setAdapter(adapter);
list2.setVisibility(View.VISIBLE);
}

■main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:textSize="20sp"
android:background="#ffffff">

<ListView
android:id="@+id/list"
android:visibility="visible"
android:layout_height="fill_parent" android:layout_width="fill_parent"/>

<ListView
android:id="@+id/list2"
android:visibility="gone"
android:layout_width="fill_parent" android:layout_height="fill_parent"/>

</RelativeLayout>

ザックリとですが、こんな感じでやればよいと思いますよ。

■searchActivity.java(変更点)
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
String[] arr = {"東京都","神奈川県","千葉県","埼玉県","茨城県","栃木県","群馬県"};

// コンポーネントの設定
list = (ListView)this.findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, arr);
list.setAdapter(adapter);
list.setOnItemClickListen...続きを読む

Q勤務表の計算式で困っています

勤務表で
A列に日付
B列に曜日
----------
Xさん
C列 出勤は◎ 休みは空欄
D列 D1=IF(C1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎")
----------
Yさん
E列 出勤は◎ 休みは空欄 
F列 F1=IF(E1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎")
----------
Zさん
G列 出勤は◎ 休みは空欄
H列 H1=IF(G1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎")
----------

といった表での計算式につきまして

日付行の例えば1日(A1行)の出勤が
3名出勤の場合
C1◎E1◎G1◎となり
D1F1H1にはそれぞれ「3」と出力

2日(A2行)の出勤が
Xさん1名の場合
C2◎ 、E2と G2 は空白となり
D2には「1」と出力
F2H2は空白
とさせる場合

D1セルの計算式を
=IF(C1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎")

としていますが計算式エラーとなり数字だけ残って表示されてしまう場合があります
その場合には下記の式に書き換えると表示が消えることもあるのですが
=IF(C1="","",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎")
毎回手作業でエラーを見つけて式を入れなおしています

計算式が違うのか根本が間違っているのか改善策をご教授ください

◎自体は別シートの方から参照コピーしております

勤務表で
A列に日付
B列に曜日
----------
Xさん
C列 出勤は◎ 休みは空欄
D列 D1=IF(C1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎")
----------
Yさん
E列 出勤は◎ 休みは空欄 
F列 F1=IF(E1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎")
----------
Zさん
G列 出勤は◎ 休みは空欄
H列 H1=IF(G1=0,"",COUNTIF(C1,"◎")+COUNTIF(E1,"◎")+COUNTIF(G1,"◎")
----------

といった表での計算式につきまして

日付行の例えば1日(A1行)の出勤が
3名出勤の場合
C1◎E1◎G1◎となり
D1F1H1に...続きを読む

Aベストアンサー

たとえ見かけは空白のような表示になっていても、空文字列(長さゼロの文字列)など何かが入力されていると、「C1=0」の条件に該当しません。

例えばあるワークシートの A1 セルが未入力のとき、B1 に「=if(a1=0,1,0)」と入力すると、B1 に「1」が返されます。未入力はゼロと同じに扱われるからです。しかし、続けて A1 に「=""」と入力すると、B1 は「0」となります。

そのような可能性があるときは、質問者さんが実行されているように、始めから「C1=""」と記述しておきます。この指定なら、「空文字列もゼロも両方該当する」ことになっています。あるいは、「C1<>"◎"」という条件も考えられますね。

C 列には空文字列を発生させない数式を入力するという方法もあります。「0」という数のときだけ非表示にするユーザー定義書式というのもあります。

空文字列は、値複写して数式を除去したとしても、クリア(Delete キー)かセルの削除か置換をしない限り、セルの中に残ってしまいます。空文字列が入力されていることは、「Ctrl+↑、↓、←、→」とか「Ctrl+End」などのショートカットキーを使ったときなどによく気付きます。その位置で高速移動するカーソルが引っかかるので。

たとえ見かけは空白のような表示になっていても、空文字列(長さゼロの文字列)など何かが入力されていると、「C1=0」の条件に該当しません。

例えばあるワークシートの A1 セルが未入力のとき、B1 に「=if(a1=0,1,0)」と入力すると、B1 に「1」が返されます。未入力はゼロと同じに扱われるからです。しかし、続けて A1 に「=""」と入力すると、B1 は「0」となります。

そのような可能性があるときは、質問者さんが実行されているように、始めから「C1=""」と記述しておきます。この指定なら、「空文字列もゼロ...続きを読む

Qandroidのサンプルソースについての質問

このページを参考に学習をしていたのですが
http://libro99.appspot.com/index3?id=29&page=2&label=android

.javaに追加するぶぶんで

text.setText(selradio.getText());
~~~~
の波線の部分のエラーをどうしても消すことができず
困っています

package test.radiobutton;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class radiobuttontest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RadioGroup group = (RadioGroup)this.findViewById(R.id.group);
RadioButton radio1 = (RadioButton)this.findViewById(R.id.radio1);
RadioButton radio2 = (RadioButton)this.findViewById(R.id.radio2);


radio2.setChecked(true);


int selid = group.getCheckedRadioButtonId();
RadioButton selradio = (RadioButton)this.findViewById(selid);
text.setText(selradio.getText());
}
}

main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>

<RadioGroup
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>

<RadioButton
android:text="@string/radio1_label"
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<RadioButton
android:text="@string/radio2_label"
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

</RadioGroup>
</LinearLayout>

これ以上はかけませんがページの指示通りにやってるつもりです
どなたかご教授お願いします

このページを参考に学習をしていたのですが
http://libro99.appspot.com/index3?id=29&page=2&label=android

.javaに追加するぶぶんで

text.setText(selradio.getText());
~~~~
の波線の部分のエラーをどうしても消すことができず
困っています

package test.radiobutton;

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class radiobuttontest extends Activity {
/** Called when the activity is first creat...続きを読む

Aベストアンサー

こんにちは

Androidをやったことがないので間違っていたら済みません。

質問欄に掲載されたURLから辿ったところ、
少し前の項目”Google androidプログラミング入門: 「Activityクラスの基本を理解しよう!」 (6/8)”
http://libro99.appspot.com/index3?id=1023&page=6&label=android

この中では
private TextView text;
というものが宣言されています。

で、そのtextに
text = (TextView)this.findViewById(R.id.text);
でデザイン上のテキストビューを割り当てていると思うので

text.setText("こんにちは、" + s + "さん。");
でテキストの変更が可能になっているように思えます。

質問欄に掲載されたコードに載っていないだけかもしれませんが、
textの宣言と、割り当てを行えばよいのではないでしょうか?

QExcel 2010 で勤務割表を作成しています。

月間の勤務割表を作成しています。
3列3行を一枡として一人・一日の枡とし、勤務の割り振り状態を表示するものです。
列に日付、行を個人名(max16名)としますから、3列3行の枡が496個となります。
各枡とも1列目の1行目に勤務種別コード(1~5)を記述し、このコードNoにより4種の図形を貼付けています。
1つ1つの枡(496個)に以下のコードを書き実行しています。膨大な行数を要します。
使用するパソコンにおいては実行速度がかなりかかります。
これをもっと単純化する手法についてご教示いただければ幸いです。

Sub Macro1()
Select Case Range("I6").Value '1人目-1日
Case 1:
ActiveSheet.Shapes("四角形1").Select
Selection.Copy
Range("J7").Select
ActiveSheet.Paste
Case 2:
ActiveSheet.Shapes("四角形2").Select
Selection.Copy
Range("I7").Select
ActiveSheet.Paste
Case 3:
ActiveSheet.Shapes("四角形3").Select
Selection.Copy
Range("J7").Select
ActiveSheet.Paste
Case 4:
ActiveSheet.Shapes("直線1").Select
Selection.Copy
Range("I6").Select
ActiveSheet.Paste
Case 9:
ActiveSheet.Shapes("四角形3").Select
Selection.Copy
Range("J7").Select
ActiveSheet.Paste
End Select
 '|
  '| <同じことを一つ一つの枡ごとに繰り返し記述しています。>
  '|
Select Case Range("CU51").Value '16人目-31日
Case 1:
ActiveSheet.Shapes("四角形1").Select
Selection.Copy
Range("CV52").Select
ActiveSheet.Paste
Case 2:
ActiveSheet.Shapes("四角形2").Select
Selection.Copy
Range("CU52").Select
ActiveSheet.Paste
Case 3:
ActiveSheet.Shapes("四角形3").Select
Selection.Copy
Range("CV52").Select
ActiveSheet.Paste
Case 4:
ActiveSheet.Shapes("直線1").Select
Selection.Copy
Range("CU51").Select
ActiveSheet.Paste
Case 9:
ActiveSheet.Shapes("四角形3").Select
Selection.Copy
Range("CV52").Select
ActiveSheet.Paste
End Select

End Sub

月間の勤務割表を作成しています。
3列3行を一枡として一人・一日の枡とし、勤務の割り振り状態を表示するものです。
列に日付、行を個人名(max16名)としますから、3列3行の枡が496個となります。
各枡とも1列目の1行目に勤務種別コード(1~5)を記述し、このコードNoにより4種の図形を貼付けています。
1つ1つの枡(496個)に以下のコードを書き実行しています。膨大な行数を要します。
使用するパソコンにおいては実行速度がかなりかかります。
これをもっと単純化する手法についてご教示いただければ幸...続きを読む

Aベストアンサー

For文を使えばコードを短くすることはできますが、図形を496個貼付けているかぎり実行時間は変わりません。
なんのために図形を貼付けているのか分かりませんが、実行時間を短くしたかったら別の方法を考える必要があります。


とりあえず、コードを短くする方法だけ。

Sub Macro1()
For i = 6 To 51 Step 3
For j = 9 To 99 Step 3
Select Case Cells(i, j).Value 'i人目-j日
Case 1:
ShapeCopy "四角形1", i + 1, j + 1
Case 2:
ShapeCopy "四角形2", i + 1, j
Case 3:
ShapeCopy "四角形3", i + 1, j + 1
Case 4:
ShapeCopy "直線1", i, j
Case 9:
ShapeCopy "四角形3", i + 1, j + 1
End Select
Next
Next
End Sub

Sub ShapeCopy(Zukei As String, i As Integer, j As Integer)
ActiveSheet.Shapes(Zukei).Select
Selection.Copy
Cells(i, j).Select
ActiveSheet.Paste
End Sub

For文を使えばコードを短くすることはできますが、図形を496個貼付けているかぎり実行時間は変わりません。
なんのために図形を貼付けているのか分かりませんが、実行時間を短くしたかったら別の方法を考える必要があります。


とりあえず、コードを短くする方法だけ。

Sub Macro1()
For i = 6 To 51 Step 3
For j = 9 To 99 Step 3
Select Case Cells(i, j).Value 'i人目-j日
Case 1:
ShapeCopy "四角形1", i + 1, j + 1
Case 2:
ShapeCopy "四角形2", i + 1, j
Case 3:
ShapeCopy "四角形3", i + 1, j + 1
Ca...続きを読む


人気Q&Aランキング

おすすめ情報