Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10877 / 76734 ←次へ | 前へ→

【71402】Re:時間を元にソートするには?
質問  シンク  - 12/2/29(水) 6:07 -

引用なし
パスワード
   お世話になっております。

kanabun氏

今回の件で質問がまた出来てしまいました。
お手数をかけてすいません。

以前記載していただいたソースでソートをした場合
日付を跨いだ際に時間が逆になってしまうことです。

エクセルのデータを確認し、TypeNameでDoubleを確認しました。
日付形式を見たところ、yyyymmddhhmmでした。
表示ではhhmmと表示されていたので、誤認しました。
それが原因で下記、マクロが上手く認識してくれなかったようです。
年月日付を考慮したシリアル値の場合、
>>If v(i, 1) > 0# And v(i, 1) < 1# Then
の部分を修正すれば、上手く認識するでしょうか?

度々、質問してしまい申し訳ありませんが、
よろしくお願いします。


Sub Try1()
 Dim v, u, i As Long
 Dim r As Range
 Set r = Range("A1", Cells(Rows.Count, 1).End(xlUp).Offset(1))
 v = r.Value2
 For i = 1 To UBound(v)
   If v(i, 1) > 0# And v(i, 1) < 1# Then
     u = v(i, 1)
   Else
     v(i, 1) = u
   End If
 Next
 r.Offset(, 2).Value = v
 r.Resize(, 3).Sort r.Columns(3), Header:=xlNo
 Stop
 Columns(3).Clear
 
End Sub


▼kanabun さん:
>▼シンク さん:
>>kanabun氏、返信ありがとうございます。
>>
>>下記の件について、試してみたところ問題があるようです。
>
>>If文の表現に問題があるのかと思いました。
>>すべてElseにいっているようです。
>>> For i = 1 To UBound(v)
>>>   If v(i, 1) > 0# And v(i, 1) < 1# Then
>そこのIf文は A列のデータが 9:00 や 8:12 など「時刻」データである
>かどうかを判定しているところです。
>もし 9:00 とかの時刻データであれば、そのセルの Valueは 9:00 で、
>そのセルの Value2 は 0.375 です。(Value = 9:00 のセルの Value2 は
>0.375 つまりシリアル値 です )
>したがって
>>   If v(i, 1) > 0# And v(i, 1) < 1# Then
>の行は 時刻の代入されているセルかどうかを調べているわけです。
>時刻は 0:00 〜 24:00 の値をとりますから、Value2としては
>0.0 〜 1.0 の範囲になります。それを判定しているわけです。
>(ただし、空白セルも、時刻 00:00 のセルも 数値にすると 0 ですから
>00:00 というデータがあると、ほんとはちょっとまずいのですが)
>
>で、 9:00 とか 8:12 とかのセルを選択して 以下を実行してDebugして
>もらえないですか?
>Sub checkDataType()
> MsgBox TypeName(ActiveCell.Value)
>End Sub
>こちらで、9:00 とか 8:12 とかのセルをポイントして ↑を実行しますと
>MsgBox には Double と表示されます。
>そちらではどうですか?
>もし String とか表示されてるとすると、これでは
>>   If v(i, 1) > 0# And v(i, 1) < 1# Then
>の範囲に入りません(文字列です)ので Else のほうに行っちゃって、
>If文の判定に失敗してます。
10 hits

【71222】時間を元にソートするには? シンク 12/2/11(土) 17:49 質問
【71223】Re:時間を元にソートするには? kanabun 12/2/11(土) 19:05 発言
【71224】Re:時間を元にソートするには? kanabun 12/2/11(土) 19:07 発言
【71234】Re:時間を元にソートするには? シンク 12/2/12(日) 16:47 質問
【71236】Re:時間を元にソートするには? kanabun 12/2/12(日) 17:29 発言
【71402】Re:時間を元にソートするには? シンク 12/2/29(水) 6:07 質問
【71403】Re:時間を元にソートするには? kanabun 12/2/29(水) 9:28 発言
【71438】Re:時間を元にソートするには? シンク 12/3/2(金) 23:20 質問
【71439】Re:時間を元にソートするには? kanabun 12/3/3(土) 0:39 発言
【71440】Re:時間を元にソートするには? kanabun 12/3/3(土) 10:27 発言
【71446】Re:時間を元にソートするには? シンク 12/3/4(日) 17:43 お礼
【71237】Re:時間を元にソートするには? kanabun 12/2/12(日) 21:22 発言
【71238】Re:時間を元にソートするには? kanabun 12/2/12(日) 21:30 発言
【71250】Re:時間を元にソートするには? シンク 12/2/15(水) 4:09 お礼
【71225】Re:時間を元にソートするには? ちん 12/2/11(土) 20:44 発言
【71235】Re:時間を元にソートするには? シンク 12/2/12(日) 16:53 発言

10877 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free