[[20020925114822]] 『列数の最大値を求めるには?』(miu23) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『列数の最大値を求めるには?』(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.