#2です。
>似た時間で並べて解析したいのですが、
ということは、やはりデータの左右の場所が変わると都合が悪いですね。
前準備が多い方法で申し訳ありませんが、方法を紹介します。
1)新たに<C>列を挿入して、データのある全ての行に数値で「1」を入力
同様に<F列>には数値で「2」を入力。
(データのインデックスとして使います)
2)<A,B,C>列のデータの下に<D,E,F>列のデータをカット&ペーストする。
3)<A,B,C>列を選択し、上部のメニューから、
「データ」→「並べ替え」を選択
「最優先されるキー」を「A列」、「昇順」にチェックを入れて「OK」
4)以下のマクロを標準モジュールに登録して実行
(登録・実行方法が分からなければ、解説します)
Sub test2()
Dim k As Integer
Dim m As Integer
Dim val_A As Double
Dim val_B As Double
Dim val_C As Double
Dim threshold As Double '近似データの判定閾値
threshold = 0.1 '閾値を変更するときはココを変えてください
k = 1 'データ探索開始行です。見出し行がある場合は2にしてください
m = k
'近似データの抽出
Do
If Cells(k + 1, "A").Value < Cells(k, "A").Value + threshold Then
Cells(k, "D").Value = Cells(k + 1, "A").Value
Cells(k, "E").Value = Cells(k + 1, "B").Value
Cells(k, "F").Value = Cells(k + 1, "C").Value
Rows(k + 1).Delete
End If
k = k + 1
Loop Until Cells(k + 1, "A") = ""
'左右データ位置の復元
Do
If Cells(m, "C").Value = 2 Then
val_A = Cells(m, "A")
val_B = Cells(m, "B")
val_C = Cells(m, "C")
Cells(m, "A") = Cells(m, "D")
Cells(m, "B") = Cells(m, "E")
Cells(m, "C") = Cells(m, "F")
Cells(m, "D") = val_A
Cells(m, "E") = val_B
Cells(m, "F") = val_C
End If
m = m + 1
Loop Until Cells(m, "A") = ""
'作業カラムの削除
Columns("F").Delete
Columns("C").Delete
End Sub
あくまで、100行程度のデータで使うことを前提にしていますので、
大規模なデータでは、遅くて使えないと思います。
なお、近似データは2つまでと仮定していますので、
3つ以上ある場合は修正が必要です。
お礼
早速の修正版作成ありがとうございます。 無償でここまで、やっていただいてホントに恐縮です。 実行してみましたが、完璧です。 これを機会に、マクロを勉強してみようと思います。 また、ほかの質問を投稿するかもしれませんが、 その時は、またお世話になるかもしれません。 よろしくお願いします。 これまで、このサイトを活用していて、一番助かりました。 ポイント20点では足りないです。。。 ホントにありがとうございました。