|
あさこ さん、Statis さん、こんばんは。
>すみません、質問ですが、
>エクセルのA〜W列に日付を入力したとして、
>同じ行に同じ日付が入っていた場合、
>トータルの日数をZ列に返したい場合どうしたらいいですか?
>
>例:
>学校にいく日を求めたい。
>A列に名前
>b列に国語
>c列に算数
>d列に社会
>e列に英語
>各行に日付(9月1日とか)を入力
>
>で、たろう君は1行目で国語は9月1日、算数9月1日、社会9月10日、英語10月5日
>とした場合、たろう君は何日学校に行かなければならないかを自動的に知りたい。
>
>という例でいかがでしょうか?
ユーザー定義関数です。
標準モジュールに
'======================================
Function Dupcount(rng As Range) As Long
Dim wk1 As Double
Dim wk2 As Long
wk1 = 0
For Each crng In rng
wk2 = WorksheetFunction.CountIf(rng, crng)
If wk2 <> 0 Then wk1 = wk1 + 1 / wk2
Next
Dupcount = WorksheetFunction.Round(wk1, 0)
End Function
仮に
あるシートのA1から
A B C D E F
1 名前 国語 算数 社会 英語 日数
2 太郎 9月1日 9月1日 9月10日 10月5日 =dupcount(B2:E2)
なんて指定してみて下さい。
この場合なら 「3」という結果を表示します。
ただし、9月1日等の日付は文字列ではなく、書式が日付に設定されたセルとします。
実は、配列数式を使用すれば、数式だけでも可能なのですが、
今回はユーザー定義関数を選択しました。
試してみて下さい。
|
|