2017-09-28 14 views
0

さまざまなパラメータの複数の範囲の各セルをチェックして、該当するオカレンスの数を返す非vba Excel関数を考案しようとしています。特定の問題は、日付セルの範囲にHOUR関数を適用し、これらのセルの数が特定の時間に等しいかどうかを数えるときに発生します。私が作業したいと思うパートナーはどのようExcel:数式内の各セルに関数を適用する

Sub tester33() 
Dim r As Range 
Dim c 
Dim a As Integer 
Set r = Range("A1:A10") 
a = 0 
For Each c In r 
    If (Hour(c) = 5) Then 'time is 5 am, other if conditions are omitted 
     a = a + 1 
    End If 
Next c 
MsgBox (a) 
End Sub 

=COUNTIF(HOUR(A:A);"=5") 

マイサーチ、これまでである:(Aは日付が含まれ、その列を想定してください)

は、明確にするために、VBAで私のような何かを書くだろう返されたnada。私はこの質問herehereの答えを見つけましたが、残念ながら非数学的なExcel関数ではうまくいかないことに注意してください。 これは、私がシート内の式に慣れていないので、これが完全に自明な問題ではないことを願っています。

答えて

0

代替(非アレイ)式 + を入力Ctrlキー + Shiftキーを使用して式をコミットする必要がない

=SUMPRODUCT(--(HOUR(A:A)=5))

を使用することです。それは最終的には好みの問題です。

また、データが列Aの全長を伸ばしていない場合は、Excelが空白セルを反復処理する必要がないため、データが占める範囲(例:A1:A50A:Aではなく)のみを使用することを検討してください。物事を圧迫することができます。

+0

TotsieMaeと@Mrigはどちらも私の問題を解決しました。両方に感謝します。範囲を制限することも良い提案です。これは、複数のセルの問題に直面するときに常に推奨できます。 – NN314

+0

私は絶対に同意します。相対参照が必要な場合を除いて、絶対参照は時間の大部分を使用する傾向があります。実際に起こる前に問題を防ぐのは、事実の後にそれを修正する方法を見つけ出すことよりも、通常は簡単です。 – TotsieMae

0

使用

=SUM((HOUR(A1:A50)=5)*1) 

または

=SUM(--(HOUR(A1:A50)=5)) 

の両方がそう + を入力しはCtrl +Shiftキーを押すことによって、それをコミット配列数式です。 A1:A50をデータ範囲に変更してください。

関連する問題