[[20170520231154]] 『同じ時間なら変更する』(チョコレートモアイ) ページの最後に飛ぶ

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

 

『同じ時間なら変更する』(チョコレートモアイ)

c列に日付 d列に時間 e列に積載場があります

同日で同積載場で同じ時間なら 15分刻みで時間を修正するvbaを教えて下さい

5/5 11:00 x検収
5/5 11:30 x検収
5/5 11:30 x検収→ 11:15もしくは11:45
5/5 13:00 x検収

あとマクロでどの時間が修正されたから青色の塗りつぶしにしてもらえると嬉しいです

11時にかりに5件あればなるべく13時にズレ込むようして頂きたいです。
(12-13時は非稼働時間)

< 使用 Excel:Excel2013、使用 OS:Windows8 >


 一挙に解決しようとせず、ステップを追ってコードを組んでいくようにしたら
 如何でしょう?

 まだ何もできてない状態ですか?ある程度できているのなら、貼り付けてみて
 ください。
(カリーニン) 2017/05/21(日) 00:43

 1.何故、3行目が変更されるのですか?

   何故、2行目を11:15に修正しないのですか?
   上の行が優先されるんですか?
   
 2.何故「もしくは」なのですか? 

   修正基準はないのですか?
   本当に11:15に遡ってもいいいんですか?

(半平太) 2017/05/21(日) 10:35


1ですが二行目が修正されても構いません。

2 まぁあまり深い意味はないです。
(チョコレートモアイ) 2017/05/22(月) 22:44


修正基準は特にないです。ただ
10:30が二つあるとして
10: 00と10:15にならないようにして欲しいです。

あと12:00から13:00は昼休みなのでこの時間は無しでお願いします

(チョコレートモアイ) 2017/05/23(火) 22:51


 >修正基準は特にないです。

 多分、本当はあるのでしょうが、
 現実のケースがそこまで込み入ることが無いので、
 明確化の必要性がないのかも、と推測します。

 ただ、そんなイージーな前提でやると、
 あとで何度も手直しする羽目になったりする事も珍しくないので、
 私としては敬遠したいです。

 ごめんなさい m(__)m

(半平太) 2017/05/24(水) 11:05


 私のアドバイスは鼻から無視されているので、私もその時点から敬遠
 してました。
(カリーニン) 2017/05/24(水) 11:08

 要件定義があいまいだとコードを書くのはできても、
 後々のトラブルになりかねないです。

 一部推測も含みますが、半平太さんの質問については
 1.3行目が修正されるのは1行目と2行目は違いがあり、3行目ではじめて同じものが出てくるから。
 2.「もしくは」なのは、ただ単に同じ値のものを避けたいだけだから。
 ではないでしょうか?

 カリーニンさんもおっしゃているようにコードの構想があれば貼り付けしてみてください。

 一応、私の思い付きのコードでよければ貼り付けておきます。(実際にはテストしてません)
 私も初心者レベルなのでロジックは悪いと思いますが・・。

 Sub Test()
    Const stRow As Long = 1
    Dim i As Long
    Dim Dic As Object
    Dim tmp
    Dim buf
    Set Dic = CreateObject("Scripting.Dictionary")
    For i = stRow To Range("C" & Rows.Count).End(xlUp).Row
        tmp = Join(Array(Range("C" & i).Value, Range("D" & i).Value, Range("E" & i).Value), ",")
        If Not Dic.Exists(tmp) Then
            Dic.Add tmp, tmp
        Else
            With Range("D" & i)
                buf = Application.Sum(.Value, TimeValue("0:15"))
                .Value = IIf(buf >= TimeValue("12:00") And buf < TimeValue("13:00"), TimeValue("13:00"), buf)
                .Interior.ColorIndex = 5
            End With
            Set Dic = Nothing
            Test
            Exit Sub
        End If
    Next i
    Set Dic = Nothing
 End Sub
(ろっくん) 2017/05/24(水) 13:07

1.日付、時間で昇順に並べてないです

(チョコレートモアイ) 2017/05/25(木) 21:43


 コードで並べ替える必要があるのですか?

 まだ回答いただいていないのですが、コードの構想はありますか?
 要件はまとめられていますか?

(ろっくん) 2017/05/26(金) 12:25


ろっくんさんのコードで上手くいきました。ありがとうございます。ただどっかのお馬鹿さんが
時間のところにamやらpmを入力されてます。
もしd列に文字が記入されてましたら無視するようなコード教えて下さい
(チョコレートモアイ) 2017/05/29(月) 00:13

 元データを置換するか、コード上で置換して処理すればいいだけのことでは?
 ※置換のコードは?とオウム返しに聞かないでね。これくらいは調べてください。
(とおりすがり) 2017/05/29(月) 00:18

 こちらの質問には回答いただいていないですが。

 入力されているD列の値が文字列かどうか判定させて、文字列の場合処理させない、とか
 「am」「pm」の文字列が入っていた場合は処理させない、とか
 とおりすがりさんの回答のように置換して処理する、とか

 ご自身の要件にあう方法をお考えください。 
(ろっくん) 2017/05/29(月) 08:48

おいいちいちケンカ売ってくるな余計なこと書き込むな
それとも名前変えて同じ奴が書き込みしているのかよ
ざけんなよ
(チョコレートモアイ) 2017/05/29(月) 23:43

おい管理人 ケンカ売ってくるバカの書き込み消せよ
フリーの書き込みだからってふざけたこと書くなよ
(チョコレートモアイ) 2017/05/29(月) 23:44

 チョコレートモアイさん
 あなたがどんな要件でどのようにしたいのか、いまいち伝わってこないから
 聞いているんです。
 中傷されるようなことはしたつもりはありませんし、
 ケンカ売る意味もありませんが、この質問に回答した私はバカだったかも
 しれませんね。

 では、駄文失礼しました。

(ろっくん) 2017/05/30(火) 08:56


コメント返信:

[ 一覧(最新更新順) ]


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