[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同じ時間なら変更する』(チョコレートモアイ)
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
2 まぁあまり深い意味はないです。
(チョコレートモアイ) 2017/05/22(月) 22:44
あと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
(チョコレートモアイ) 2017/05/25(木) 21:43
コードで並べ替える必要があるのですか?
まだ回答いただいていないのですが、コードの構想はありますか? 要件はまとめられていますか?
(ろっくん) 2017/05/26(金) 12:25
元データを置換するか、コード上で置換して処理すればいいだけのことでは? ※置換のコードは?とオウム返しに聞かないでね。これくらいは調べてください。 (とおりすがり) 2017/05/29(月) 00:18
こちらの質問には回答いただいていないですが。
入力されているD列の値が文字列かどうか判定させて、文字列の場合処理させない、とか 「am」「pm」の文字列が入っていた場合は処理させない、とか とおりすがりさんの回答のように置換して処理する、とか
ご自身の要件にあう方法をお考えください。 (ろっくん) 2017/05/29(月) 08:48
チョコレートモアイさん あなたがどんな要件でどのようにしたいのか、いまいち伝わってこないから 聞いているんです。 中傷されるようなことはしたつもりはありませんし、 ケンカ売る意味もありませんが、この質問に回答した私はバカだったかも しれませんね。
では、駄文失礼しました。
(ろっくん) 2017/05/30(火) 08:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.