• ベストアンサー

エクセル関数で教えてください。

例えば、A列の1行目からA列の100行目まで社員の名前が重複せずに100人分あります。B列1行目からW列100行目までにランダムに数字が入っています。数字は重複していません。この、数字(例えば5という数字)のセルの場所を特定したいのですが、関数でこの場所を特定する方法を教えていただけませんか? 結果的に必要なのは、5という数字が何行目にあるかだけですので、それだけ分かれば良いのですが。良い方法が見つかりません。 今回はマクロは一切使わない条件です。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 こんな式でいかがかしら? =SUMPRODUCT((B1:W100=5)*ROW(A1:A100)) ただし、B1~W100 までに式があると、循環参照になると思います。 >今回はマクロは一切使わない条件です。 (VBAが中心の私にとって、何か挑戦的(^^;。単に「一切使わない条件」と言わずに、一言、理由をつけてくださいね。)

ijnnenhhh
質問者

お礼

回答ありがとうございます。 なるほどですね。感心いたしました。 今回関数にこだわったのは、マクロに頼りすぎる傾向が自分にあるため、しばらくの間、関数で処理できるものは全て関数でと自分に言い聞かせているからです。といっても全く関数初心者です。 ありがとうございました。

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

ijnnenhhh 様へ #3 のWendy02です。 >今回関数にこだわったのは、マクロに頼りすぎる傾向が自分にあるため、しばらくの間、関数で処理できるものは全て関数でと自分に言い聞かせているからです。 私もある意味同感しています。本題とは外れてしまいますが、マクロと関数とどちらが速いか競争してみれば分ります。 やはり、さすがに、Cで作られた関数は、VBAの100倍以上に速いです。私は、常に速さを気にします。だから、Excelでは、VBAとワークシート関数を上手に組み合わせるのが、一つ上のVBAの使い方ですね。ただ、私は、VBAよりも、関数のほうがずっとむつかしいと思います。 理由は、VBAは、あるパターンが公開されていますが、関数の解法のパターンは、インターネットのサイト上では、まとめて公開されていませんから、せっせと集めるしかありませんね。それに、問題として提起して、式は教えてくれても、その式に至る考え方とか方法とかについては、誰も教えてくれません。身をもって知りました。

ijnnenhhh
質問者

お礼

再回答いただいていたのに、気付いておりませんでした。 >VBAは、あるパターンが公開されていますが、関数の解法のパターンは、インターネットのサイト上では、まとめて公開されていませんから、せっせと集めるしかありませんね。 このサイトの有り難さを実感しました。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

#3,#4のご回答はすばらしい。 それに比べ下記は(ワーク列を使うので)落第かな。 判りやすいとは思うが。 例データ A1に探すデータを入れる。いま5とする。 A2:C4 A列 B列 C列    E列 1 2 7 0 3 5 6 1 8 9 4 0 E2に=COUNTIF(A2:C2,$A$1)と入れ、E4まで式を複写する。 結果を求めるセルに =MATCH(1,E2:E4,0)+1 結果は3(第3行目)

ijnnenhhh
質問者

お礼

お礼を書き忘れていました。 いつも参考にしています。ありがとうございました。

  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.4

こんちは 行位置 =INT(MAX(INDEX((B1:W100=5)*(ROW(B1:W100)*257+COLUMN(B1:W100)),))/257) 列位置 =MOD(MAX(INDEX((B1:W100=5)*(ROW(B1:W100)*257+COLUMN(B1:W100)),)),257) てな感じでしょか

ijnnenhhh
質問者

お礼

お礼を書いておりませんでしたが、参考にさせていただきました。ありがとうございました。

  • elbert
  • ベストアンサー率25% (95/373)
回答No.2

他のやり方ですが、 編集→検索で検索する文字列を「5」にして セルの内容が完全に同一であるものを検索する ではダメですか?

ijnnenhhh
質問者

お礼

何度もありがとうございます。 説明が下手でなかなか伝わりにくいのですが、今回はどうしても関数として取得できればと思っています。 ありがとうございました。

  • elbert
  • ベストアンサー率25% (95/373)
回答No.1

B列を選んでデータ→フィルタ→オートフィルタで プルダウンメニューのオプションから 抽出条件の指定で、今回の場合では「5と等しい」にする。

ijnnenhhh
質問者

お礼

早速の回答ありがとうございます。 説明が大変下手なので、内容がうまく伝わっていなくて申し訳ありませんでした。 B列1行目からW列100行目までの範囲内にある全ての数字について(行、列)を特定する必要があります。 イメージとしては、INDEX関数の逆バージョンというイメージです。 説明が下手であることを実感しているのですが、うまく説明できず申し訳ありません。補足要求もお待ちしております。 よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう