|    | 
     kanabun氏、返信ありがとうございます。 
 
下記の件について、試してみたところ問題があるようです。 
 
If文の表現に問題があるのかと思いました。 
すべてElseにいっているようです。 
話がそれますが、Value2等個人的にあまり使わない関数が使われていたので、 
色々と勉強になります。 
関数って色々な使い方があるんですね。 
又、作業列を使ったソートする発想がまったく浮かびませんでした。 
ユニークですばらしいと思いましたが、 
> For i = 1 To UBound(v) 
>   If v(i, 1) > 0# And v(i, 1) < 1# Then 
の部分がよくわかりませんでした。 
 
お手数ですが、返信をお願いします。 
 
▼kanabun さん: 
>▼シンク さん: 
>こんにちは〜 
>もっといい方法があるかもしれませんが、作業列を使った方法です。 
>元の表を A列の値が時間データ以外のとき、上の時間データをコピー 
>したものに変更した配列を 作業列(C列) に貼り付け、この列をキーに 
>ソートします。 
> 
>(ソート直前) 
> A列   B列        C列   
>9:00  メール受信。      0.375 
>1212  AAABBBCCCDDDEEE  0.375 
>1212  FFFGGGHHHIIIJJJ    0.375 
>                 0.375 
>  メール受信。         0.375 
>1213  AAABBBCCCDDDEEE  0.375 
>1213  FFFGGGHHHIIIJJJ   0.375 
>                0.375 
>8:12  メール受信。      0.341666667 
>1214  AAABBBCCCDDDEEE  0.341666667 
>1214  FFFGGGHHHIIIJJJ    0.341666667 
>                 0.341666667 
>  メール受信。         0.341666667 
>1215  AAABBBCCCDDDEEE  0.341666667 
>1215  FFFGGGHHHIIIJJJ    0.341666667 
>                 0.341666667 
>6:12  メール受信。      0.258333333 
>1214  AAABBBCCCDDDEEE  0.258333333 
>1214  FFFGGGHHHIIIJJJ    0.258333333 
>                 0.258333333 
> 
>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 
 | 
     
    
   |