Excel VBA 質問スレッド №1991 (解決済)
データの呼び出し
投稿者 : おぼん 投稿日時 : 2024/08/14(Wed) 16:36:50 OS : 未指定 EXCEL : 未指定
sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。
そして、sheet1の内容をsheet3に転記しようと考えています。
お聞きできたらうれしいのが、sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。でみなさんが思われた方法をお聞きしたいです。
画像にあるsheet2の人数は一部で、合計で70人ほど下に同じ配列で登録しようと思います。人数は今後増えることや、減ること、時間の変更などあると思います。
マクロや数式、Excelの機能ありましたら教えていただけると幸いです。
お忙しいと思うので、ヒントだけでもいただけるとありがたいです。
よろしくお願いします。
画像1 https://ibb.co/SKDtTwJ
画像2 https://ibb.co/F33tPJ9
画像3 https://ibb.co/bWMcrr0
画像4 https://ibb.co/8M8MvTh
sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。
そして、sheet1の内容をsheet3に転記しようと考えています。
お聞きできたらうれしいのが、sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。でみなさんが思われた方法をお聞きしたいです。
画像にあるsheet2の人数は一部で、合計で70人ほど下に同じ配列で登録しようと思います。人数は今後増えることや、減ること、時間の変更などあると思います。
マクロや数式、Excelの機能ありましたら教えていただけると幸いです。
お忙しいと思うので、ヒントだけでもいただけるとありがたいです。
よろしくお願いします。
画像1 https://ibb.co/SKDtTwJ
画像2 https://ibb.co/F33tPJ9
画像3 https://ibb.co/bWMcrr0
画像4 https://ibb.co/8M8MvTh
スポンサーリンク
[返信 1] Re : データの呼び出し
投稿者 : さんこう 投稿日時 : 2024/08/14(Wed) 17:21:44
>sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。
>そして、sheet1の内容をsheet3に転記しようと考えています。
最初からsheet3に呼び出せばよさそうに思いますが。
>sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。でみなさんが思われた方法
Sheet2の形式を変更して、SUMIFS関数にします。
(現状の形式でも、INDEX関数とMATCH関数中心の数式でできましたが...)
とはいえ、ここはVBAの掲示板なので、ユーザー定義関数を提示しておきます。
実用的ではないので、参考程度で。
>sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。
>そして、sheet1の内容をsheet3に転記しようと考えています。
最初からsheet3に呼び出せばよさそうに思いますが。
>sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。でみなさんが思われた方法
Sheet2の形式を変更して、SUMIFS関数にします。
(現状の形式でも、INDEX関数とMATCH関数中心の数式でできましたが...)
とはいえ、ここはVBAの掲示板なので、ユーザー定義関数を提示しておきます。
実用的ではないので、参考程度で。
Function 出勤時間(名前, 曜日) Set ws = Worksheets("Sheet2") 出勤時間 = "えらー" For r = 1 To ws.Cells(Rows.Count, "A").End(xlUp).Row If ws.Cells(r, "A") = 名前 Then For i = 1 To 5 If ws.Cells(r + i, "A") = 曜日 Then 出勤時間 = ws.Cells(r + i, "B") Exit For End If Next End If Next End Function
[返信 2] Re : データの呼び出し
投稿者 : ピロリ 投稿日時 : 2024/08/17(Sat) 08:07:01
> ・・・ sheet1の内容をsheet3に転記しようと考えています。
Sheet1へ1人ずつ呼び出さないと Sheet3への転記ができないって、面倒なのでは?
私も Sheet2から Sheet3へ全員分を直接転記すれば・・・と思いますが、何か事情があるのでしょうかね。
> sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。
「Sheet1」シートモジュールの Worksheet_Changeイベントで処理させても良いでしょう。
例えば下のような感じでしょうか。 ヒントになるか分かりませんけど。
> ・・・ sheet1の内容をsheet3に転記しようと考えています。
Sheet1へ1人ずつ呼び出さないと Sheet3への転記ができないって、面倒なのでは?
私も Sheet2から Sheet3へ全員分を直接転記すれば・・・と思いますが、何か事情があるのでしょうかね。
> sheet1のA1セルに名前を入力すると、sheet2の名前の人の各曜日の出退勤時間を呼び出す。
「Sheet1」シートモジュールの Worksheet_Changeイベントで処理させても良いでしょう。
例えば下のような感じでしょうか。 ヒントになるか分かりませんけど。
Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet, r As Range Set ws = Worksheets("Sheet2") If Target.Address = "$A$1" Then 'A1セル(名前)の入力なら、 Application.EnableEvents = False Range("A2:C6").ClearContents '一旦、出退勤情報を消去 If Target = "" Then Target.Select: MsgBox "名前を入力して!" Else Set r = ws.Columns(1).Find(What:=Target, LookAt:=xlWhole) '名前の検索 If r Is Nothing Then '検索できなかったら、 Target.Select: MsgBox "検索異常:" & Target 'エラーメッセージを表示 Else '検索できたら、 r.CurrentRegion.Copy Target '該当者の全情報をコピペ End If End If Application.EnableEvents = True End If End Sub
[返信 3] Re : データの呼び出し
投稿者 : おぼん 投稿日時 : 2024/08/18(Sun) 12:48:14
さんこう様、ピロリ様、ありがとうございます。
Sheet2から Sheet3へ直接転記はその発想が質問時点でなかったです。教えていただいて、なるほどと気づきましたが、自分にはそれを実現できる技量もないかなと。あとは、最初の形で進んでいるのもありまして。
これは、質問後に発生したことなのですが、sheet2の内容の必要な部分(例で表a1:f4の範囲のa1:a4,c1:d4)だけをsheet3に転記することも必要になりました。
この場合、sheet2からsheet1に呼び出したデータから必要部分だけを、sheet1の別セルにコピーし、それをsheet3に転記するという形をとってます。
結果的にはsheet1からの転記が必要なことになったのかな?もっと別の方法、シンプルな方法があるだろうとも思っていまして。
結論から言うと問題は解決しましたが、またお暇なときにお気づきの点を教えていただけると幸いです。
さんこう様、ピロリ様、ありがとうございます。
Sheet2から Sheet3へ直接転記はその発想が質問時点でなかったです。教えていただいて、なるほどと気づきましたが、自分にはそれを実現できる技量もないかなと。あとは、最初の形で進んでいるのもありまして。
これは、質問後に発生したことなのですが、sheet2の内容の必要な部分(例で表a1:f4の範囲のa1:a4,c1:d4)だけをsheet3に転記することも必要になりました。
この場合、sheet2からsheet1に呼び出したデータから必要部分だけを、sheet1の別セルにコピーし、それをsheet3に転記するという形をとってます。
結果的にはsheet1からの転記が必要なことになったのかな?もっと別の方法、シンプルな方法があるだろうとも思っていまして。
結論から言うと問題は解決しましたが、またお暇なときにお気づきの点を教えていただけると幸いです。
[返信 4] Re : データの呼び出し
投稿者 : 解決 投稿日時 : 2024/08/28(Wed) 12:05:14
かいけつ
かいけつ
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-06 04:44:05 )