[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『列数の最大値を求めるには?』(miu23)
●△□●△□●△□
上記セルの並びで、□の最大列数は9です。(I列に相当)
この値"9"を求めるためには、どのような関数を使えばよいでしょうか?
または、どのような関数を組み合わせを行えばよいでしょうか?
よろしくお願いいたします。
以上
最大という意味がいまいちわかりませんが、
=COUNTA(A1:m1)ではだめですか?
(kazu)
不明瞭な質問の文になってしまい、失礼致しました。
上記質問にたいして欲しい答えは、セルの列番号です。
したがって、上記例題では、□の列の値は3と6と9ということになります。
match関数を試したのですが、最初の3という数字だけが返されてしまうため、
match("□",1:1,0)
□の最大列数の9という数字を得るためには、どのような方法があるか?
ということが質問内容になります。
このへんはもうユーザー関数の出番ですね。
(kazu)
[ツール(T)]メニュー→[マクロ(M)]→[Visual Basic Editor(V)]を選択します。
[挿入(I)]メニューから[標準モジュール]を選択します。
下のVBAをコピーして、[標準モジュール]のシートに貼り付けます。
VBEを[ファイル(F)]メニューから[終了してMicrosoft Excelに戻る(C)]
Function matchlast(srch, adr)
matchlast = 0
For Each cell In adr
If cell.Value = srch Then
matchlast = cell.Column
End If
Next
End Function
ワークシート側には下の式を入れます。
=matchlast("□",A1:I1)
ばっちりでした!
ありがとうございます。
解決済みですが、行列数式で求めることも出来ます。
=MAX(IF(A1:I1="●",COLUMN(A1:I1),""))
=MAX(IF(A1:I1="△",COLUMN(A1:I1),""))
=MAX(IF(A1:I1="□",COLUMN(A1:I1),""))
各式を入力して、Ctrl+Shift+Enterで確定します。
{=MAX(IF(A1:I1="●",COLUMN(A1:I1),""))}⇒ 7
{=MAX(IF(A1:I1="△",COLUMN(A1:I1),""))}⇒ 8
{=MAX(IF(A1:I1="□",COLUMN(A1:I1),""))}⇒ 9
Enterのみで確定すると#VALUE!のエラー値が返されますが、
式をダブルクリックして、編集状態にしてから再度Ctrl+Shift+Enterで確定します。
{=large(IF(A1:I1="●",COLUMN(A1:I1),""),1)}⇒ 7
{=large(IF(A1:I1="△",COLUMN(A1:I1),""),1)}⇒ 8
{=large(IF(A1:I1="□",COLUMN(A1:I1),""),1)}⇒ 9
でも同様に求められます。これであれば、SMALL関数、LARGE関数で最大値の前、最少値の次など
任意に変更も出来ます。
(シニア)
うおーっ。
これ、すごいっすね!!
ありがとうございます。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.