dポイントプレゼントキャンペーン実施中!

(1)3,2,6,5,8のように全て異なる場合
  答えは6
(2)2,2,3,3,5,5、3のように同じ数字がある場合  答えは3

よろしくお願いします。

A 回答 (4件)

A1からA7までに数値が入力されているとして、


=LARGE(IF(FREQUENCY(A1:A7,A1:A7),A1:A7),2)
としてみて下さい。

この回答への補足

求めていたものでした。
それにしてもfrequency関数がこのように使えること、またさらにif関数については驚いております。if関数は論理式が0またはヌルが偽、0以外の数が真に対応いると解釈して良いようですがこのような使い方知りませんでした。
ありがとうございました。

補足日時:2005/01/08 19:23
    • good
    • 0
この回答へのお礼

欄を間違えました。
求めていたものでした。
それにしてもfrequency関数がこのように使えること、またさらにif関数については驚いております。if関数は論理式が0またはヌルが偽、0以外の数が真に対応いると解釈して良いようですがこのような使い方知りませんでした。
ありがとうございました。

お礼日時:2005/01/08 19:35

(1)LARGE(A1:A10,2)


(2)C列を作業列としそれを使って
C1に=IF(COUNTIF($B$1:B1,B1)=1,B1,"")といれC10
まで式を複写。
その後(1)と同じく、=LARGE(C1:C10,2)
配列数式で上記の作業列を使わないでやれないかと思ってやって見たが、成功していない。
    • good
    • 0
この回答へのお礼

複数の同じ数字を一つにする方法として面白く思いました。ありがとうございました。

お礼日時:2005/01/08 19:50

(1)の様な場合LARGE関数で求めることができます。


(2)の様な場合は、簡単には、求まりません。
ということで、
重複する値を含めないmyLARGE関数を作ってみました。
ALT+F11でVBEにて標準モジュールを挿入して貼り付けてからワークシートでLARGE関数と同じように使います
Public Function myLarge(r As Range, rank) '重複する値は同じ順位
Dim a, i, x
a = asSet(r)
Call ArraySort(a)
myLarge = a(rank - 1)
End Function
Private Function asSet(r As Range) '重複しない数値データの配列にする
Dim NumList
Dim x As Range, i
Set NumList = CreateObject("Scripting.Dictionary")
For Each x In r
If Not NumList.Exists(x.Value) Then '重複チェック
NumList.Add x.Value, 1
Else '重複時の処理
NumList.Item(x.Value) = NumList.Item(x.Value) + 1
End If
Next
asSet = NumList.Keys
End Function
Private Sub ArraySort(a, Optional ascending = 0) '規定値は大きいもの順
Dim wk, i As Integer, j As Integer, k As Integer
Dim n
n = UBound(a)
k = n \ 2
Do While (k > 0) 'シェルソート
For i = 0 To n - k
j = i
Do While (j >= 0)
If a(j) > a(j + k) Then
wk = a(j)
a(j) = a(j + k)
a(j + k) = wk
j = j - k
Else
Exit Do
End If
Loop
Next
k = k \ 2
Loop
If ascending = 0 Then '逆順にする
i = 0: j = n
Do Until (i >= j)
wk = a(i)
a(i) = a(j)
a(j) = wk
i = i + 1: j = j - 1
Loop
End If
End Sub
    • good
    • 1
この回答へのお礼

VBAによるユーザー定義関数、ありがとうございました。

お礼日時:2005/01/08 19:56

AS2=LARGE(IF($A2:$GQ2=GS$1,$B2:$GR2),2)



とかでだめでしょうか?

この回答への補足

すみません、使い方がわかりませんでした。

補足日時:2005/01/08 19:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!