• 締切済み

エクセルでご質問させていただきます。

エクセルでご質問させていただきます。 下図のように、カレンダーのような表の各日付のマスをクリックすると出てくるリスト(あらかじめ設定した単語="訪"、"電"、"見"、"来"、"受")から一つを選んで表示し、同時に最終訪問日のセルにその日の日付が自動的に入力されるようにしたいのですが、IF関数を使うと条件式が7個までしか登録できなかったと思いますので、一ヶ月(30日分)を満たせるような関数の記述は出来ませんでした。 シートを1年分用意しているため、VBAで処理を行えればと考えておりますが、このような場合はどのような記述をすれば宜しいでしょうか?

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.4です。 >ちなみに、リスト中の特定の語句(複数)のときだけ日付を出したいと思っておりますがその場合はどのような記述になりますでしょうか? とありましたので再びお邪魔します。 複数の語句が入るということは前回のリスト表示はまったく無視させていただき、手入力だとします。 (もちろん前回同様、その語句をリスト候補に加えても構いません) 仮にその語句が「訪見」 ← これはこちらで適当に二文字を選択しています。 二文字が完全一致でない(文字間にカンマや中点等がある)とちゃんと表示されませんので、適宜アレンジしてみてください。 前回の表をそのまま使わせてもらうとして、 (1)日付セルが単に数値のみでの入力だった場合は、B5セルに =IF(COUNTIF(B5:AF5,"訪見"),INDEX($B$4:$AF$4,,MAX(IF(B5:AF5="訪見",COLUMN($A$1:$AE$1))))&"日","") (2)日付セルがシリアル値で表示形式だけを「d」としている場合は =IF(COUNTIF(B5:AF5,"訪見"),TEXT(INDEX($B$3:$AF$3,,MAX(IF(B5:AF5="訪見",COLUMN($A$1:$AE$1)))),"d日"),"") どちらも配列数式になりますので、前回同様Shift+Ctrlキーを押しながらEnterキーで確定です。 数式内の「訪見」の部分は前述のようにアレンジしてみてくださいね。 こんな感じがご希望なのですかね? 以上、参考になればよいのですが・・・m(__)m

missingheart
質問者

お礼

配列関数は億が深く、もっと勉強してみようと思いました。 アドバイス有難うございマス!

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.5

No1です。 Orでも出来ますが =INDEX($1:$1,1,MAX(((B2:H2="訪")+(B2:H2="電"))*(COLUMN(B2:H2)))) Ctrl+Shift+Enter では如何でしょうか。 配列関数ですが B2が訪 なら 1 違ったら 0  B2が 電 なら 1 違ったら 0 その結果を列番号を掛ける つまり 訪 か 電 の列番号 が答え 次に C2が訪 なら 1 違ったら 0  C2が 電 なら 1 違ったら 0 その結果を列番号を掛ける つまり 訪 か 電 の列番号 が答え ・・・ と繰り返し計算して その結果の最大値の列番号を得ると 云った風です。 詳しくは配列関数で 検索してみてください。

missingheart
質問者

お礼

有難うございます。(実は職場のデスクでやってますんで)自宅に帰ったら早速試してみますネ!結果はまたご報告致します。

missingheart
質問者

補足

ばっちりでした!有難うございます!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! もしかして介護か障害者関係の調査票のような感じですが・・・ それはさておいて、1年分ということはSheetが12枚ある訳ですよね? 一応そういうことだとして・・・ 一つの案ですが、一つ一つ手入力するのではなく、入力する項目が決まっているのであれば、入力規則の「リスト」を利用してみてはどうでしょうか? まずSheet1を開いたままShiftキーを押しながら最後のSheetのSheet見出しをクリックします。 これですべてのSheetがグループ化されましたので、今開いているSheetで ↓の画像のような表を作成します。 1行目のB1~G1(空白セルも一つ選択しておきます)がリスト表示させる項目になります。 当方使用のExcel2003ではSheetのグループ化をしていると入力規則は設定できませんので、最後に各Sheetごとに設定します。 表のB5セルに =IF(COUNTA(B5:AF5)=0,"",INDEX($B$3:$AF$3,,MAX(IF(B5:AF5<>"",COLUMN($A$1:$AE$1))))) これは配列数式になりますので、この画面からコピー&ペーストしただけではエラーになると思います。 B5セルに貼り付け後、F2キーを押す、またはB5セルをダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 このB5セルをオートフィルで下へずぃ~~~!っとコピーしておきます。 Sheet見出し上で右クリック → グループ化の解除 を選択 そして、各SheetのB5セルから31日の最後の行を範囲指定 → データ → 入力規則 → 「リスト」を選択 → 「元の値」の欄の右側の四角をクリックし、B1~G1セルを範囲指定し、OK これで範囲指定したセルすべてにリスト表示可能になります。 尚、ここで空白セルを一つ入れておくと間違った場合に空白を選択すれば大丈夫です。 以上、長々と書きましたが 参考になれば幸いです。m(__)m

missingheart
質問者

お礼

"グループ化"とは、知りませんでした。今やってみましたが便利ですね。 判りやすくご説明いただき有難うございます。 ちなみに、リスト中の特定の語句(複数)のときだけ日付を出したいと思っておりますがその場合はどのような記述になりますでしょうか?

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

1日がB1から右へ続いてるとして =IF(COUNTIF(B2:AF2,"*"),MATCH("",B2:AF2,-1),"") で日にちの数値が入ります。 日付にしたいのでしたら =IF(COUNTIF(B2:AF2,"*"),DATE(2010,9,MATCH("",B2:AF2,-1)),"") のようにしてください。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

質問の内容ですが 訪 の文字が出てくる最後の日付 と云ったことでしょうか? 配列関数ですが =INDEX($1:$1,1,MAX((B2:AE2="訪")*(COLUMN(B2:AE2)))) といれて Ctrl+Shift+Enter で決定させてみてください。 >シートを1年分用意しているため、VBAで処理を行えればと考えておりますが、このような場合はど >のような記述をすれば宜しいでしょうか? こうなるとシートの構成を考えたほうが良いです。 1枚のシートで縦方向に1年分でも2年分でも日付をたっぷり入れていくやり方に変えましょう。 そして 別シートに 年 と 月 をいれると その月の一覧表が出るようなシートを準備します。 つまりデータのシートと表示のシートの2枚ですみます。

missingheart
質問者

お礼

出来ました!有難うございます。 ちなみに、日付を表示させる単語を、"訪"の他にもいくつか設定したい場合は、 "訪"or"電"という風にすればいいのでしょうか? 何度もすみません...

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

1日がB1から右へ続いてるとして =MATCH("*",B2:AF2,0) で日にちの数値が入ります。 日付にしたいのでしたら =DATE(2010,9,MATCH("*",B2:AF2,0)) のようにしてください。

missingheart
質問者

お礼

とても参考になりました。有難うございます。

関連するQ&A

  • Excelでのカレンダー作成について

    Excelでカレンダー(1カ月分)を作っているのですが、祝日に色を付けるのがどうしてもうまくいきません。 祝日の日付を入れたセルを用意したのですが、1つ関数につき1日分しか色をつけれませんでした =COUNTIF((1),(2))>=1 (1)祝日の日付を入れた複数の範囲のセル (2)カレンダーの日付のセル[1日分] これでやると1カ月分すべてのセルに対して1日ずつ条件を入れなければならないです。 (2)で1カ月分の日付の範囲をすべて選択してみたのですが、うまく表示されませんでした(>_<) どのような関数をつかえば、1カ月分すべての祝日の色を変えることが出来るでしょうか? 回答お願いしますm(_ _)m

  • エクセル2010 VBA初心者です

    エクセル2010で30日分の日報を作成しています 日付の入力をカレンダーから選択したくて、Microsoft Date and Time Picker Control6.0 を使用して、日報1日目の日付のセルにカレンダーから日付を入力する事が出来るようになりました。 これを30日分のそれぞれの日付のセルに入力出来るようにするにはどうすれば良いでしょうか? 単純にコピーして貼り付けても出来ませんでした。 VBAやマクロは初心者ですが、教えていただける方がいましたら宜しくお願い致します また補足が必要な物があれば教えてください 宜しくお願い致します

  • 当番表をexcelで作成したい

    トイレ掃除の当番カレンダー表をexcelで作成したいです。 「3日づつ」交代で「8人」で回す~等の決まりで 関数やVBAなどを使って作成したカレンダーに 自動で名前が表示されるようにできないでしょうか? 「」部分は変動する場合があります。 土日祝日は休みです。 1列の物ではなく普通の市販されているような7×6マスのカレンダー表記です。

  • エクセルVBAのカレンダーコントロールの件で

    エクセルVBAを使用して リストボックスかコンボボックスかテキストボックスかを クリックするとカレンダーコントロールが呼び出されて カレンダーコントロールの日付をクリックすると カレンダーコントロールは閉じその値が上記2行目いずれかに 入力されるようにすることは可能なのでしょうか いろいろ文献を探してみたのですがよくわからずじまいでした よろしくお願いします

  • カレンダーの不思議

    以前から気になっていたのですが、カレンダーで一番下の行の日曜日、月曜日の1マスに2日分の日付が入っていることがあります。今月なら 23/30、24/31 のように。もちろんそうでないカレンダーも多いし、スペースがないならまあ理解できますが、不思議なのはその下が空いているにもかかわらずこのような表示があることです。5行以内に収めなくてはならないなどの理由とか規格でもあるのでしょうか? 1マスにわざわざ2日を入れても、数字が小さくなって見にくいし、良いことは何もないような気がするのですが。

  • エクセルについて教えてください。

    エクセル2002を使用しています。 上に日付と曜日、左に項目といった表を作っています。各日に左の項目ができたかできなかったかを日の欄に○や×で記入していく表です。 そこで、2つほど教えてください。 1、日付の欄は縦書きに書式設定しています。2桁の数字が縦に並ぶように表示されます。つまり、10の1と0が縦に並びます。これを横に並ばせる方法はないでしょうか? 2、月を変えたら曜日も変わるといった関数はないのでしょうか? よろしくおねがいします。

  • vbaで日付から曜日と祝日を求める方法

    vbaでWeekday関数を使わないで日付から曜日と祝日を求める方法を教えてください 課題でカレンダーを作らなきゃいけないんですが関数は使わないでと言われています

  • EXCEL:WORKDAY関数の使い方

    EXCELで祝日リストを用意し、WORKDAY関数で開始日から何日後の日付をを表示したいと考えています。 しかし、この関数では土日を休日としているため、年に数回のみの土曜営業日(もしくは日曜営業日)をまたぐ日付表示はうまくいきません。 祝日リスト(休業日)とは反対の意味になりますが、別シートに土曜営業日リストを用意してその日を営業日として計算に含む方法はありませんでしょうか? 関数では不可能でVBAで可能であれば、VBAでも構いませんのでどうかEXCELの知識のある方よろしくお願いします。

  • excelで出来ますか?

    excelで出来ますか? 下記のように、アルバイトのシフト表(約100人分)があります。上旬、中旬、下旬毎に各人の最初の出勤日を関数を使用して抽出したいのです。 東京太郎の場合、上旬は1日、中旬は11日、下旬は21日、大阪花子の場合は、上旬は3日、中旬は11日、下旬は21日、横浜次郎の場合は、上旬は2日、中旬は11日、下旬は22日となりますが、その結果を下のカレンダーに丸印で表示したく考えています。 シフト表のA1とかB2は勤務時間帯、×は個人理由の休み希望、休は単純な休みを表示しています。 目的は各旬ごとに最初の出勤日に個人面談をしなければならないため、リストから選ぶのを関数などで各日ごとにだれだれがいて、何人いるかをシフト表完成時に月間予定を確認したいためです。 業務的なことで恐縮ですが、いろいろ考えても思いつきませんので、アドバイスをいただければ幸いです。 宜しくお願いいたします。

  • エクセルでアンケート実施

    Excel2010です。 複数の人に、日程の希望日を聞きたいとします。 メールでエクセルのカレンダーを回して印を付けさせる方法を取りたいです。 エクセルのカレンダーは、月をリストから選択することで表示が変わります。 希望日を入力する側は、リストから月を選択して、該当する日付のセルに「○」を入力します。 しかし、複数の月に希望日がある場合、「○」を付けてリストの月を変更しても、 当然「○」はそのまま残ってしまいます。 これを、例えばリストの月を7月を選択し、希望日に「○」を入力したとして、 次に8月を選択した時に、この「○」が消えるようにすることはできますか? もちろんその後8月にも入力して7月を選択すると、8月分は消えて先ほどの7月分が出てきて欲しいです。 よろしくお願い致します。

専門家に質問してみよう