• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数あるシートの特定セルに数値を入力したい。)

複数のシートに数値を入力したい - 年間支払金額一覧

このQ&Aのポイント
  • 複数のシートに同じフォーマットの表があり、特定のセルに日付を入力すると支払金額が表示されます。
  • TOP画面のチェックボックスがついたシートにのみ日付を入力したいです。
  • チェックがついたシートのデータを週払いデータなど他のシートに表示することは可能でしょうか?

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

  • ベストアンサー
回答No.5

希望に沿っているか自信ありませんが、別のサンプルを作りました。 http://m17xr2.at.webry.info/201006/article_7.html

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

その他の回答 (5)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

回答No1です。要はB列にTRUEのある、すなわち空でない、人についてのシートでトップシートのM35からN38までに入力した日にちがAF4からAG7セルに表示されればよいのですね。 ここではトップのシートの名前 トップ として式を建てることにします。また、Sheet1からSheet58までのシート名はそのままにしてトップのシートで4行目に人がSheet1、5行目の人がSheet2、以下同様になっているとします。 初めにトップシートは別にしてSheet1からSheet58までをシート見出しで左から右方向に順番に並べます。その上でSheet1を選択したのちにShiftキーを押しながらシート見出しのSheet58をクリックします。 それによってSheet1からSheet58までが同じ作業グループになります。 その上で、Sheet1のF4セルには次の式を入力してG4セルまでオートフィルドラッグしたのちにAF7やAG7セルまで下方にもオートフィルドラッグします。また、これらのセルの表示形式は日付にしまっす。 最後にトップシートを選択することで作業グループを解除します。 これでB列にTRUEのある人に該当するシートにトップシートで設定した期間のデータが入力されることになります。一度お試しください。

07535373
質問者

お礼

お礼が遅くなりスミマセンでした。 皆さまに色々考えていただき なんとか解決できました。 ありがとうございます。

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

メインで表示されている表を1行1レコードとしたデーターベースとして定義し、 マクロでそのデーターベースをレコード単位で処理すれば可能です。 サンプルマクロは最も単純で基本的な物を作りました。 対象シートNo.の取得部分をデーターベースのチェックされたレコードにすればOK。

07535373
質問者

補足

ありがとうございます。 何度もスミマセン 私のほうのセルに合わせて書いたのですが、 見ていただけますか、 Sub フィールドクリア() ' ' フィールドクリア Macro メインのM35からO38をクリアします。 ' ' Range("M35:O38").Select Selection.ClearContents Range("L40") = "" Range("D4").Select End Sub 処理実行マクロ Sub 処理実行() ' ' 処理実行 Macro ' ' ' 内部変数宣言 ' Dim S_NO As Integer Dim Itm1 As Integer Dim Itm2 As Integer Dim Itm3 As Integer Dim Itm4 As Integer Dim MSG$ ' ' 内部変数初期化 ' S_NO = 0 Itm1 = 0 Itm2 = 0 Itm3 = 0 Itm4 = 0 MSG_OK$ = "正常に処理されました。" MSG_NG$ = "シートNo.に誤りがあります。" ' ' メイン処理 ' Sheets("メイン").Select S_NO = Range("D4") Itm1 = Range("M53:N35") Itm2 = Range("M36:N36") Itm3 = Range("M37:N37") Itm4 = Range("M38:N38") Range("L40") = MSG_OK$ Select Case S_NO Case 1 Sheets("シート1").Select Case 2 Sheets("シート2").Select Case 3 Sheets("シート3").Select Case Else Range("L40") = MSG_NG$ GoTo Exit1 End Select Range("AF4:AG4") = Itm1 Range("AF5:AG5") = Itm2 Range("AF6:AG6") = Itm3 Range("AF7:AG7") = Itm4 Exit1: Sheets("メイン").Select Range("D4").Select End Sub あと 対象シートのNo取得部分をデーターチエックされたレコードにかえるのは、 Range(”D4”)を変えるのでしょうか B3からチエックボックスがあるのですが、TRUEの時だけそのセルの、ページリンクに飛ばす 方法は どのようにすれば出来ますか、 スミマセンがよろしくおねがいします。

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

簡単なマクロのサンプルを作ってみました。 参考にどうぞ。 http://m17xr2.at.webry.info/201006/article_6.html

07535373
質問者

お礼

回答ありがとうございます。 マクロが組めれば、広がりますね。 作っていただいた サンプルですが シートNOを指定しなくても たとえば B3~B55までの Trueの各当シートにだけ 飛ばすなんて事も マクロは出来ますか?

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

どのような状況なのか分かりにくいのですがトップ画面のところでどんなデータがどのセルに入力されたら度のシートのどのセルの日付を今日の日付にしたいというのでしょう。 上記のようなことでしたらマクロを使わなくとも関数で対応することもできますね。シートが54枚とのことですがどのような名前のシートになっているのでしょう。できれば連続した番号の入ったシート名になっているのがよいでしょう。あるいはトップ画面で日付を入力したい該当のシート名が表示されるようになっていればより簡単でしょう。

07535373
質問者

補足

検討ありがとうございます。 トップ画面の状態は、 ・・・・・・・A・・・・・・・・B・・・・・・・・・C・・・・・・・・・D・・・・・・・・E・・・・・ 1 2・・・・・出勤数・・・・・週払い・・・・・・NO・・・・・・コード・・・・・・名前・・・ 3・・・・・・15・・・・・・True・・・・・・・1・・・・・・・7725・・・・・・田中・・・・ 4・・・・・・20・・・・・・   ・・・・・・・2・・・・・・・3312・・・・・・鈴木・・・・ 5・・・・・・3・・・・・・・TRUE・・・・・・・・3・・・・・・・2289・・・・・・山田・・・・ このような感じで、シート名は、スタッフ一覧と言う名前になっています。 データは、右のE・F・G・ とつづきます。 1シートに1名分の勤怠・明細表がありまして、 B列とE列の3行目から各個人シートに ページリンクしてあります。 シート名は3行目から Sheet1から下に向かって増えていきます。 田中さんは、Sheet1・ 山田さんは、Sheet3で、 シート名は、順番になってます。 スタッフ一覧(トップ画面)の   スタッフ一覧    当確各シート(SHEET1~54)                 ・・・・・・ M35・・・・⇒・・・・・・AF4                  ・・・・・・N35・・・・⇒・・・・・・AG4                    ・・・・・・M36・・・・⇒・・・・・・AF5                 ・・・ ・・・N36・・・・⇒・・・・・・AG5                 ・・・ ・・・M37・・・・⇒・・・・・・AF6                  ・・・・・・N37・・・・⇒・・・・・・AG6                  ・・・・・・M38・・・・⇒・・・・・・AF7                  ・・・・・・・N38・・・・⇒・・・・・・AG8    このような感じでスタッフ一覧のM35のデータを 各シートのAF4にとばしたいのです。    入力データーは、 日付で 5/1 などです。 各シートの AF4:AG8に 日付を入れると支払額が出るようになってます。 これは、週払い希望者用ですので  AF4 5/1 AG4 5/4 と記入すると      4日フ分の賃金がでます。  一月に多くて、週払いは 4回なので   計 8個のデーターを とばしたいのです。 このデーターは、 週払い希望者だけですので、B列3に、チエックボックスがついていて 週払い希望者は、TRUE 表示され セルが青に変わります。 また B3から 各シートにページリンクされているので、(B3は、山田でシート1へページリンク) B列のTRUE表示されたシートだけに データー飛ばせれば、 最高なのですが   よろしくお願いします。  

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

エクセルのセルは基本的に直接入力あるいは他のセルの参照という形をとります。 従って、トップのシートの内容を判断し特定のシートに書き込む処理は通常出来ません。 しかし、トップのシートにフォームボタンを設置し、これにVBAでマクロを記述すれば可能です。 これを実現するためには、VBAのプログラミングをしなければなりません。 VBAで自由にプログラミングが出来るようになれば、ほぼすべての処理が可能になるでしょう。

07535373
質問者

お礼

回答ありがとうございます。 やはりセル参照になりますか・・・ マクロは、基本自動登録メインなので、さっぱりです。 本読んでも、なかなか 頭に入りません。 やはりだめですね。 ありがとうございました。

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

関連するQ&A