日付時刻と2つの基準に基づいて値を見つけるためのExcel関数/ VBA


0

建物の占有データを含むデータを測定しました。各階の各部屋には、複数の部屋と複数の部屋領域があります。部屋番号には床が含まれているため、床で検索する必要はありません。

そして居住データはその特定の領域で活動があった時はいつでも記録されたタイムスタンプを持っています。

基本的には、Excelに部屋番号と部屋の面積が一致し、時間が一致するかどうかを確認して、その領域が占有されているかどうかを報告します。

INDEX MATCHは複数の正確な基準を検索する場所でしか見つけることができません。時間値に最も近いものが必要なので、ここでは適用できません。

任意の助けは大歓迎です!私はこれを達成することができる機能に最も興味があるでしょうが、VBAソリューションにも同様にオープンです。

ありがとうございました!

これはデータへのリンクです。

http://jmp.sh/v/D907ef9W3055ThlR1ssa

| Date / Time    | DATE     | TIME  | FLOOR | LAB    | LAB AREA | Occupancy (0 = unoccupied) |
|----------------|----------|-------|-------|--------|----------|----------------------------|
| 9/3/2015 10:30 | 9/3/2015 | 10:30 | 9     | 99400  | A        | 0                          |
| 9/3/2015 10:30 | 9/3/2015 | 10:30 | 10    | 109400 | D        | 0                          |
| 9/3/2015 10:30 | 9/3/2015 | 10:30 | 8     | 89400  | A        | 0                          |
| 9/3/2015 10:31 | 9/3/2015 | 10:31 | 10    | 109400 | D        | 1                          |
| 9/3/2015 10:36 | 9/3/2015 | 10:36 | 8     | 89400  | B        | 0                          |
| 9/3/2015 10:38 | 9/3/2015 | 10:38 | 8     | 89400  | A        | 1                          |
| 9/3/2015 10:40 | 9/3/2015 | 10:40 | 10    | 109410 | A        | 1                          |
| 9/3/2015 10:41 | 9/3/2015 | 10:41 | 15    | 159400 | A        | 1                          |
| 9/3/2015 10:52 | 9/3/2015 | 10:52 | 8     | 89400  | B        | 1                          |
| 9/3/2015 10:57 | 9/3/2015 | 10:57 | 8     | 89400  | E        | 1                          |
| 9/3/2015 11:20 | 9/3/2015 | 11:20 | 10    | 109410 | A        | 0                          |
| 9/3/2015 11:21 | 9/3/2015 | 11:21 | 17    | 179400 | D        | 1                          |
| 9/3/2015 11:21 | 9/3/2015 | 11:21 | 12    | 129400 | E        | 1                          |
| 9/3/2015 11:23 | 9/3/2015 | 11:23 | 10    | 109410 | A        | 1                          |
| 9/3/2015 11:26 | 9/3/2015 | 11:26 | 8     | 89400  | E        | 0                          |
| 9/3/2015 11:54 | 9/3/2015 | 11:54 | 8     | 89400  | C        | 0                          |
| 9/3/2015 14:10 | 9/3/2015 | 14:10 | 17    | 179400 | E        | 0                          |
| 9/3/2015 14:16 | 9/3/2015 | 14:16 | 12    | 129410 | B        | 0                          |
| 9/3/2015 14:17 | 9/3/2015 | 14:17 | 14    | 149410 | A        | 0                          |
| 9/3/2015 14:31 | 9/3/2015 | 14:31 | 17    | 179400 | E        | 1                          |
| 9/3/2015 14:38 | 9/3/2015 | 14:38 | 9     | 99400  | A        | 0                          |
| 9/3/2015 14:43 | 9/3/2015 | 14:43 | 14    | 149410 | A        | 1                          |
| 9/3/2015 14:47 | 9/3/2015 | 14:47 | 17    | 179400 | D        | 1                          |
| 9/3/2015 14:51 | 9/3/2015 | 14:51 | 9     | 99400  | A        | 1                          |
| 9/3/2015 14:56 | 9/3/2015 | 14:56 | 14    | 149410 | A        | 0                          |
| 9/3/2015 15:01 | 9/3/2015 | 15:01 | 10    | 109410 | A        | 0                          |
| 9/3/2015 15:04 | 9/3/2015 | 15:04 | 10    | 109410 | A        | 1                          |
| 9/3/2015 15:07 | 9/3/2015 | 15:07 | 14    | 149410 | A        | 1                          |
| 9/3/2015 15:15 | 9/3/2015 | 15:15 | 8     | 89400  | C        | 1                          |
| 9/3/2015 15:18 | 9/3/2015 | 15:18 | 12    | 129400 | E        | 1                          |
| 9/3/2015 15:22 | 9/3/2015 | 15:22 | 8     | 89400  | E        | 1                          |
| 9/3/2015 15:27 | 9/3/2015 | 15:27 | 17    | 179400 | D        | 0                          |
| 9/3/2015 15:27 | 9/3/2015 | 15:27 | 17    | 179400 | E        | 0                          |

データサンプルを提出してください。データがソートされている場合、Matchはおおよその一致を返すことができます。より詳細な提案があれば、データ構造に関する知識が必要になります。したがって、データサンプルを提供してください。
teylyn

問題ない。データサンプルを掲載するにはどうすればよいですか。
Prevost

ファイル共有サービスを使用し、質問を編集してリンクを貼り付けます。それが終わったらコメントを投稿してください。
teylyn

データを投稿しました。
Prevost

回答:


0

下のスクリーンショットを見てください。わかりやすくするために、数式は複数のヘルパーセルに分割されていますが、1つのセル内で(または名前付き範囲で)機能するように構成することもできます。

データを最初に日付/時刻、次にLab領域、Labの順に並べ替えます。

firstRow       =MATCH(lab&Area,INDEX(FullTable[LAB]&FullTable[LAB AREA],0),0)
lastRow        =COUNTIFS(FullTable[LAB],lab,FullTable[LAB AREA],Area)+firstRow
TimeMatchRow   =MATCH(time,INDEX(FullTable[Date / Time],firstRow):INDEX(FullTable[Date / Time],lastRow),1)
occupancyValue =IF(INDEX(FullTable[Occupancy (0 = unoccupied)],firstRow+TimeMatchRow-1),"occupied","not occupied")

firstRowは、ラボとエリアの組み合わせが見つかった最初の行を設定します。ラボとエリアのコンボ数を追加すると、時間値のおおよその参照に使用する範囲の最後の行を確定するのに役立ちます。最後のパラメータとして1を指定した場合、完全に一致するものが見つからなかった場合、Matchは次に小さい値を返します。それは、時間の一致が見つかった行です。最後に、占有列にインデックスを使用して、firstRowとtime matchの行を追加し、1ずつ調整します。

enter image description here


それは素晴らしい。お願いしますが、もう少しやっていることを説明できますか?私は数字を差し込んですべてがうまくいったが、どのようにしてこれを思いついたのか?日付が年代順に並んでいなければ、このタスクを実行する同等の方法はありますか?
Prevost
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.