2016-06-14 2 views
1

に、異なるタイムスタンプを分類:エクセルVBA - ここではサンプル - データセットで作業する10分のブラケット

...

Device Name | Time | Time Bracket 
    ID 1  |06:24:03 | 
    ID 1  |06:24:05 | 
    ID 1  |06:31:03 | 
    ID 1  |06:54:58 | 
    ID 1  |06:55:00 | 
    ID 1  |06:59:12 | 
    ID 1  |07:24:14 | 
    ID 1  |07:24:15 | 
    ID 1  |07:32:12 | 
    ID 1  |11:07:18 | 
    ID 1  |11:21:27 | 
    ID 1  |11:32:12 | 
    ID 1  |11:32:13 | 
    ID 1  |11:36:01 | 
    ID 2  |07:05:55 | 
    ID 2  |07:05:56 | 
    ID 2  |07:22:15 | 
    ID 2  |08:32:49 | 
    ID 2  |08:32:51 | 
    ID 2  |09:05:22 | 
    ID 2  |10:11:24 | 
    ID 2  |10:11:26 | 
    ID 2  |11:34:41 | 
    ID 2  |11:42:34 | 
    ID 2  |11:42:35 | 
    ID 2  |12:50:40 | 

私が達成しようとしている何がタイムスタンプ集計の列に各行に合わせてあります

たとえば、07:00〜07:9:59のいずれかの項目は、3列の07:00:00括弧内に含まれ、07:10:00〜07:19:59は07:10: 00など。

私はこれを行う式を考えることができなかったので、私はVBAに連れて行った。

私は、列Bを繰り返し処理する必要があることを理解しており、それぞれについて値を見て、どのステートメントに進むべきかを判断するためにcaseステートメントを使用します。

簡単に言えば、私は24 * 6 = 144 case/if文を作成したくありません。

分値だけを見て、それが6つの時間括弧(*:00、*:10など)のいずれかに収まるかどうかを判断し、時間を読み込み時間で置き換えます値から。

だから私はこのような何かを実装してみました:そこ

Sub time_cater() 
    For i = 1 To Rows.count 
    Select Case Range("Ci").Value 
     Case "**:0*:**" 
      'Range("Ci").Value = Range("Ci").SUBSTRING(**)+:10:00 

    Next i 

    End Sub 

そして、明らかに多くを...

問題は、私はサブストリング部分を達成する方法を見つけ出すことができないということです...もし存在しなければ、私は144ケースのステートメントを作成しますが、より洗練されたソリューションが必要です。

編集:Ci部分が機能するかどうかは完全にはわかりません...行C(ワークシート上のC)を通過し、カウンタの番号を調べます。

私はこれをあなたに渡します。ご協力いただきありがとうございます。

+0

私はこの問題がどのようなものか分かりません。あなたはC列に "時間括弧"を入れたいと思っています。この "時間括弧"は秒を使わないでB列(時間)とまったく同じようです。だから、なぜあなたは 'C2'セルに次の式を入れて(コピーして)' = TIME(HOUR(B2)、MINUTE(B2)、0) 'をしたらいいのですか?あるいは、私はこの質問の複雑さを過小評価していますか? – Ralph

+0

ねえ、以下は私が欲しかった答えです。 私は十分にはっきりしていたとは思わないが、TIME(x)で時間の操作が可能であることを知らなかったので、それもあります:) –

答えて

1

このブラケットは、Excelの関数を介して、列BのデータがDateTimeであることが分かります。

=HOUR(B2) &"_"& INT(MINUTE(B2)/10) 

あなたはソート/フィルタリングのために使用することができますブラケットを作成します。私はそれを行うような方法は、の線に沿って何かです。

希望は意味があります。

+0

それは賢い方法です...!私はまだ知らないExcelについてのトンがあるようだ! 0などを入力するやや修正されたバージョンを使用し、それは動作します! = IF(HOUR(B4)<10、 "0"、 ")&HOUR(B4)&": "&INT(MINUTE(B4)/ 10)&0&":00 –

+0

私はアップヴォートしますが、担当者はまだいますが、ありがとうございます! –

+0

:) - 私の喜びと喜んで、@ R.Sama働いた。そして、Excelについてまだ分かっていないとしても、質問を続けてください。私たちはあなたを助けてあなたを正しい方向に向けることをうれしく思います!あなたのプロジェクトに幸運。 –

関連する問題