• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル カルテ記載すると、出席表へ印)

エクセル カルテ記載で出席表への自動チェック

このQ&Aのポイント
  • エクセルで日々のカルテを効率化するためにマクロや関数を試しています。
  • 日々のカルテを表に入力したら出席表にも自動でチェックをつけたいです。
  • 現在は手動で出席表に登録しているので、エクセルデータをそのまま使用したいです。

質問者が選んだベストアンサー

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

こんばんは! あるSheet(Sheet1とします)に名前があると「出席表」に「1」が入れば良い訳ですかね? そういうことだと解釈しての一例です。 「出席表」Sheetの名前は入力済みだとしています。 Sheet1に作業用の列を設けます。 作業列E2セルに =A2&B2 という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 日付に関してはシリアル値の方が扱いやすいと思いますので、↓の画像のように「出席表」Sheetに 年・月 の数値を入れるセルを設けています。 「出席表」SheetのB4セルに表示形式はユーザー定義から d としておいて、数式を =IF(MONTH(DATE($A$1,$A$2,COLUMN(A1)))=$A$2,DATE($A$1,$A$2,COLUMN(A1)),"") B5セルの表示形式はユーザー定義から aaa としておき =IF(B4="","",B4) として、B4・B5セルを範囲指定し31日のAFまでオートフィルでコピー! 最後にB6セルに =IF(COUNTIF(Sheet1!$E:$E,B$4&$A6),1,"") という数式を入れ、列方向と行方向にオートフィルでコピーすると画像のような感じになります。 参考になれば良いのですが、的外れならごめんなさいね。m(__)m

jhjfoiajo
質問者

お礼

丁寧な説明ありがとうございました。 日付のシリアルと名前をひとつにしておくことで、解決できるのですね。 出席表の日付をシリアル管理にするところまではいっていたので、本当に助かりました。 本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

>入力場面は別に作りマクロで空白セルへ登録するようになっています そこまで作り込んだなら一緒に出席表にも付けてしまえば,それで終わりですが。 作成例: textbox1に年/月/日 textbox2に名前が記入してある private sub commandbutton1_click()  dim h as range  if not isdate(textbox1) then exit sub  ’カルテに転記する  set h = worksheets("カルテ").range("A65536").end(xlup).offset(1)  h = textbox1  h.offset(0, 1) = textbox2  ’出席表に転記する  set h = worksheets("出席表").range("A:A").find(what:=textbox2, lookin:=xlformulas,  lookat:=xlwhole)    ’初出なら追記する  if h is nothing then  set h = worksheets("出席表").range("A65536").end(xlup).offset(1)  h = textbox2  end if  ’日付のセルに記入する  h.offset(0, day(textbox1)) = 1 end sub

jhjfoiajo
質問者

お礼

ありがとうございました。 出席表を別に作り直したらできました。 出席表が既存のエクセルシートだったため、それを利用したいと思い、関数にこだわってました。 この辺まで、簡単に入力できればすばらしいですね。 私はまだまだ、言葉の意味もわからずにコピペしています。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

こういう業務がらみの処理はエクセルは適したものではない。関数では出来ないか式がたいへん複雑な式になることが多い。少なくともエクセルVBAが出来ないと、色んな点で行き詰まるのは目に見えている。またデータの2表の連動を図るのはマクロでないと難しい。 質問者はどういう立場か知らないが、システムを作るようなことは深入りしないほうが良いでしょう。複雑な式などいれた表を作ると、退職や配置換えしたあとに後の人が困る事もある。 ーー 質問の表の項目がどういうタイミングで作られる(記入される)のかの視点が説明されて無い。システムの経験者じゃないだろうからやむを得ないが。 (1)1表(カルテ)が一日分でも出来上がったとき、出席表に新規顧客を手入力して。出席表を作るとかならできる 名前で出席表の名前列のどの行かを知るMATCH関数がある。 日もカルテ表のその名前のA列の日付によって、出席表の日付の見出しのあるアルB1より右列(例B2:31列右列まで) のどの列かを割り出せる。 ーー 参考 例データと結果 Sheet1 A1:C10 日付 氏名 合成キー 2011/5/8 田中 40671田中 2011/5/10 木村 40673木村 2011/5/10 鈴木 40673鈴木 2011/5/11 田中 40674田中 2011/5/11 鈴木 40674鈴木 2011/5/11 大村 40674大村 2011/5/12 田中 40675田中 2011/5/12 大村 40675大村 2011/5/12 東 40675東 C列は C2に=A2&B2 下方向に式を複写する。 ーー Sheet2 A1:F6 氏名列と日付行の内容は人手で作成(両表は連動して無いということ) ーー 2011/5/8 2011/5/9 2011/5/10 2011/5/11 2011/5/12 田中 1 ー ー 1 1 鈴木 ー ー 1 1 ー 木村 ー ー 1 ー ー 大村 ー ー ー 1 1 東 ー ー ー ー 1 B2の式は =IF(NOT(ISERROR(MATCH(B$1&$A2,Sheet1!$C$1:$C$100,0))),"1","") B2の式をF2まで横方向に式複写。 B2:F2の式を下方向に式複写。 結果上記Sheet2 セルの1は”1”の部分を”○”や”出”と返られる。 ーー カルテはお医者のカルテを連想するので、要らぬ予断を生むので、受付表とかにしたらどうだろう。社内で使う慣用用語は 使用はよく考えて(カルテとはごげんはカードのことらしいということで、医者の診療カルテに限らないことも知っているが)。

jhjfoiajo
質問者

お礼

ありがとうございます。 独学なので、説明不足があってようで申し訳ありません。 日付と名前の合成キーを作るというヒントで無事に解決できました。 本当にありがとうございます。 ちなみに、カルテと記載しましたがリハビリテーションカルテの記載です。もちろん素人の独学ですが、配置の転換や転職はないし、専門の業者に頼むような余裕もありません。 日々の仕事を少しでも効率よくしていこうとの試みでした。

すると、全ての回答が全文表示されます。

関連するQ&A