[[20160707175247]] 『マスターからの読み込み』(みき1995) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マスターからの読み込み』(みき1995)

現在生産計画の簡易板を作成しようとしています。
まずはマスターとして
A機種 120分 B機種80分 C機種160分などを作成します。
エクセルにA列縦に時間を20分単位で24時間分手入力します。

そこでB列にA機種をいれるとC列に6セル分色またはマスターでいれた数値を返したいです。

また7行目からは空白なのでB7にB機種と入れ4セル分またうまります

9:00  A機種  A
9:20        A
9:40        A
10:00      A
10:20      A
10:40      A
11:00 B機種   B
11:20       B
11:40       B
12:00       B

のようなものを何種類かつくりたいと思っています。
色々検索しましたがわからないためにご教授頂ければ
幸いです。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 関数での処理案は、いずれ専門家さんからあると思いますが場つなぎでVBA。
 マスタ(どのシートでもOK)は、機種名と分数(20分の倍数であること)のリストを作成し
 その機種名のセルのそれぞれの背景色を好みの色にしておきます。
 で、そのリスト全体を List という名前にしておきます。

 Sub Test()
    Dim c As Range
    Dim dic As Object
    Dim w As Variant

    Application.ScreenUpdating = False

    Columns("C").ClearContents
    Columns("C").Interior.ColorIndex = xlNone
    Set dic = CreateObject("Scripting.Dictionary")

    For Each c In Range("List").Columns(1).Cells
        dic(c.Value) = Array(c.Offset(, 1).Value, c.Interior.Color)
    Next

    For Each c In Range("B1", Range("B" & Rows.Count).End(xlUp))
        If Not IsEmpty(c) Then
            If dic.exists(c.Value) Then
                w = dic(c.Value)
                c.Offset(, 1).Resize(w(0) / 20).Interior.Color = w(1)
            Else
                c.Offset(, 1).Value = "**登録なし**"
            End If
        End If
    Next

 End Sub

(β) 2016/07/07(木) 19:33


 もし、前(上)のスケジュールがまだ終わらないのに、B列に機種名があった場合、D列にワーニングをだしてみました。

 Sub Test2()
    Dim c As Range
    Dim dic As Object
    Dim w As Variant

    Application.ScreenUpdating = False

    Columns("C").ClearContents
    Columns("C").Interior.ColorIndex = xlNone
    Columns("D").ClearContents
    Set dic = CreateObject("Scripting.Dictionary")

    For Each c In Range("List").Columns(1).Cells
        dic(c.Value) = Array(c.Offset(, 1).Value, c.Interior.Color)
    Next

    For Each c In Range("B1", Range("B" & Rows.Count).End(xlUp))
        If Not IsEmpty(c) Then
            If dic.exists(c.Value) Then
                w = dic(c.Value)
                If c.Offset(, 1).Interior.ColorIndex <> xlNone Then c.Offset(, 2).Value = "★★スケジュールがダブっています★★"
                c.Offset(, 1).Resize(w(0) / 20).Interior.Color = w(1)
            Else
                c.Offset(, 1).Value = "**登録なし**"
            End If
        End If
    Next

 End Sub

(β) 2016/07/07(木) 19:49


 1.マスタテーブルを作る(下図サンプルでは F2:G4 )

     G2セル =TEXT(F2/1440,"h:m")*1
   下にコピー

 2.時刻データを入力

   (1)A2セルに9:00と入力
   (2)A3セルに =TEXT(A2+"0:20","[h]:mm")*1
     下にコピー

 3.稼働欄(C列)に数式を埋める

   C2セル =IF(B2<>"",IF(C1="┃","┫","┓"),IFERROR(TEXT(VLOOKUP(LOOKUP("ー",B$1:B2),E$2:G$4,3,FALSE)-TEXT(A2-LOOKUP("ー",B$1:B2,A$1:A2),"h:m"),"""┃"";;""┛"""),""))
   下にコピー

 <結果図>
  行  __A__  ___B___  __C__  _D_  ___E___  __F__  __G__
   1  時刻   機種名   稼働        機種名   x分間  x時間
   2  9:00   A機種    ┓          A機種      120  2:00 
   3  9:20            ┃          B機種       80  1:20 
   4  9:40            ┃          C機種      160  2:40 
   5  10:00           ┃                               
   6  10:20           ┃                               
   7  10:40           ┃                               
   8  11:00  B機種    ┫                               
   9  11:20           ┃                               
  10  11:40           ┃                               
  11  12:00           ┃                               
  12  12:20           ┛                               
  13  12:40                                            
  14  13:00                                            

(半平太) 2016/07/07(木) 20:02


皆様、大変わかりやすくしかも私のレベルではほど遠い内容もあり
質問以上に勉強になりました。
真にあるがとうございました。
(みき1995) 2016/07/11(月) 14:28

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.