dポイントプレゼントキャンペーン実施中!

よろしくお願いします
仕事で顧客(例A様、B様、C様)の各週間予定表を一つのシートで作成してお配りしているのですが、それを一覧できるシートを自動作成したいと思っています
これまでは各シートを確認しながらの間違いやすい、手間のかかる作り方をしていましたがなんとか効率化できればと思っています
曜日毎で時間が重なる場合は2、3名のお名前が載せれるように、そして一覧では30分区切りにしていますが、各顧客週間予定表では15分刻みにしているので繰り上げ(9時15分なら9時30分へ)して一覧に載せたいと思っています
また、このような一覧の作り方だと難しい場合は違う様式で一覧シートを作成になってもかまいません
Excelの本など読みましたが参考になるのはなく、なんとかお知恵を拝借できますでしょうか

「Excelの各シートの一覧シートの作り方」の質問画像

A 回答 (1件)

一覧、顧客予定表のレイアウトが小っちゃくて、よく分からなかったので、勝手に想像してVBAを書いてみました。

こちらの想定は下図の通りです。差異がある場合は、適宜、コードを修正して下さい。

各時間は、シリアル値で入力してください。もし、顧客予定表の時間を「9:00~」と表示したい場合は、書式設定で「h:mm"~"」としてください。
顧客予定表の時間に、一覧の時間を超えるような値(例えば、23:00とか)を入力した場合、一覧上の一番遅い時間に転記されます(一覧に存在する直近の時間に転記するようにしています)
一応、エラー処理は入れていますが、かなり雑です。必要に応じて追加してください。

Sub sample()
Dim ws As Worksheet
With Sheets("一覧")
Range(.Cells(2, 2), .Cells(Rows.Count, Columns.Count)).Clear
End With
For Each ws In Worksheets
If ws.Name <> "一覧" Then Call subTenki(ws)
Next
End Sub

Sub subTenki(ws As Worksheet)
Dim rng As Range
Dim c As Long
Dim r As Long
On Error GoTo ErrorHandler
With Sheets("一覧")
For Each rng In ws.Range("A5:F5")
If rng.Value <> "" Then
c = WorksheetFunction.Match(rng, .Rows("1:1"), 1)
r = WorksheetFunction.Match(rng.Offset(-1), .Columns("A:A"), 0)
If .Cells(r, c) = "" Then
.Cells(r, c) = ws.Range("A1")
Else
.Cells(r, c) = Cells(r, c) & _
vbLf & ws.Range("A1")
End If
End If
Next
End With
Exit Sub
ErrorHandler:
MsgBox ws.Range("A1") & "(" & ws.Name & ") に不正な入力があります。" _
& vbLf & "このシートの転記を中断しました。"
End Sub
「Excelの各シートの一覧シートの作り方」の回答画像1
    • good
    • 1
この回答へのお礼

ママチャリ様
ご回答ありがとうございます。
VBAという方法があったのですね。
仕事でexcelをずっと使用してきたのにもかかわらず、お分かりだと思いますが、知識不足でVBAという発想は出てこず、また何ができるか、どう使うかもわからないレベルでした。
このプログラムの使い方すらわからないのですが、見させていただいた限り私の希望していたものです。
これから何を勉強すればいいのかというのも、わからせていただけたベストアンサーです。
お手数をおかけしました。
本当にありがとうございます。

お礼日時:2016/06/26 18:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!