|
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
|
|