[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『機械管理簿のシートが多すぎて確認する手間を省きたい。』(IRA)
初めまして、Excel初心者です。
現在、職場で使っている機械を毎日動作確認するための管理簿
(同じフォーマット)があり、月末にシートを一括選択し、
月日の変更、印刷しているのですが、なにせ数が多く、
本当に変わっているのか一つ一つ確認しています。
(そもそも信じて印刷すればいいのでしょうが…)
これを一つのシートで完結させる方法はないでしょうか。
点検表はこんな感じです。
点検日 123456………31
点検項目
1電源入る ☑☑… …☑
2異音がしないか ☑… …☑
3オイル漏れはないか☑…
4などなど
・項目は機器ごとに変わり、最大15項目
・
・
15
承認者 検査員
印 印
このフォーマット管理簿のシート一つ別で作成し、そのシートの管理番号を
データの入力規則等で変更したら、それに合わせて
機器名、点検項目が変わるような仕様にしたいのです。
また、年、月を変えれば日付も自動で変わるような仕様が理想です。
シートの移動をして確認する手間を省きたい事が一番の目的です。
その後、印刷ですべての機械分印刷なんてことは出来るのでしょうか。
いろいろ調べてはいるものの、日付変更はできそうなのですが、管理番号を変えればその機器名、点検項目が変わるといったものが見つからず、
(請求書で管理番号を変えれば、企業名、金額が変わるといったものはありましたが、方法が多すぎてどれがいいのかもわからず…)
そもそも出来るのか…すらもわかりません。
マクロ、VBA、関数いろいろな方法があると思うのですが
もしできるなら教えていただけませんでしょうか。
よろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
マスタシートに
管理番号の一覧とそれに付随する機器名
機器名とそれに付随する点検名 を記載しておいてVLOOKUPで呼び出すとかどうでしょう?
点検項目数のばらつきがあるなら、
=IF(VLOOKUP(【機器名のセル】,【マスタシートの点検項目一覧部分】,2【ここをずらしていく。最大16】,FALSE)=0,"",VLOOKUP(【最小のVlookupと同じ数式】))
にしておくと、ない項目は空白になります。
(質問) 2023/11/22(水) 12:06:04
それは複数あるシートの月を一つづつ変更しているということでしょうか?
そうであれば、1つシートを作って、月を入力し、
他のすべてのシートからそのセル(月)を参照してはどうでしょうか?
管理番号の入力により入力内容を変更するというのは、できるにしても大変だと思いますので、
管理番号の入力により、そのシートに飛ぶというのはどうでしょうか?
シートは管理番号別にできていると思いますので、シート名を管理番号にします。
その上で、以下のようなコードでジャンプできます。
Sub Jump()
Application.Goto Worksheets(ActiveSheet.Cells(1, 1)).Cells(1, 1) End Sub
A1に管理番号を入力し、となりにボタンでもつけて、上記コードを割り当ててはどうでしょうか?
(ゆたか) 2023/11/22(水) 12:44:06
質問様
マスターシート利用してのVLOOKUPでの呼び出し、試してみます。
ありがとうございます。
ゆたか様
毎日動作チェックしてる為、月日は必要です。
ここについては、月を変えれば日が変わる設定が出来ました。
他のすべてのシートからの参照、頂いたコード、試してみます。ありがとうございます。
(IRA) 2023/11/22(水) 12:49:53
'シートモジュール Dim 点検項目 As Object Const 機器名 As String = "機器A,機器B,機器C,機器D,機器E" Const 管理番号 As String = "番号1,番号2,番号3,番号4,番号5"
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range, r1 As Range, i As Long On Error Resume Next If Target.Offset(-1).Value <> "管理番号" Then Exit Sub Set 点検項目 = CreateObject("Scripting.Dictionary") 点検項目("機器A") = "1電源入る ,2異音がしないか,3オイル漏れはないか" 点検項目("機器B") = "1電源入る ,2異音がしないか,3オイル漏れはないか,4ライトがついているか" 点検項目("機器C") = "1異音がしないか,2オイル漏れはないか,3ライトがついているか,4温度は正常か,5湿度は適正か" 点検項目("機器D") = "1ライトがついているか,2温度は正常か,3湿度は適正か" 点検項目("機器E") = "1電源入る ,2異音がしないか,3オイル漏れはないか,4ライトがついているか,5温度は正常か,湿度は適正か" Set r = Cells.Find("機器名", , , xlWhole) Application.EnableEvents = False For i = 0 To UBound(Split(機器名, ",")) If Target.Value = Split(管理番号, ",")(i) Then r.Offset(1).Value = Split(機器名, ",")(i) Set r1 = Cells.Find("点検項目", , , xlWhole) r1.Offset(1).Resize(15).ClearContents r1.Offset(1).Resize(UBound(Split(点検項目(Split(機器名, ",")(i)), ","))).Value = Application.Transpose(Split(点検項目(Split(機器名, ",")(i)), ",")) End If Next i Application.EnableEvents = True End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error Resume Next If Len(Cells.Find("管理番号", , , xlWhole)) * Len(Cells.Find("機器名", , , xlWhole)) * Len(Cells.Find("点検項目", , , xlWhole)) = 0 Then MsgBox "当シートに「管理番号」「機器名」「点検項目」の文言のセルがありませんのでキャンセルします": Exit Sub End If If Target.Offset(-1).Value <> "管理番号" Then Exit Sub With Target.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=管理番号 End With End Sub
(mm) 2023/11/22(水) 14:00:53
Application.Goto Worksheets(ActiveSheet.Cells(1, 1)).Cells(1, 1)
こちらの式ですが、午前中には動作していた(はず)ですが、午後から動作しなくなりました(なんでやねん?)
Application.Goto Worksheets(ActiveSheet.Cells(1, 1).Value).Cells(1, 1)
としておきます。
(ゆたか) 2023/11/22(水) 14:24:44
こちらも試してみます!
ありがとうございました!!!
(IRA) 2023/11/22(水) 17:06:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.