重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【終了しました】教えて!gooアプリ版

エクセル2002の複数のシートに同じレイアウトの表が作成してあります。
(各シートには名前がつけてあります。)
同じセル番地の最大値の値と最大値のあるシート名を表示したいと思います。
値の方は3D集計をMAX関数を使って行なえば求められるのですが、
最大値が位置するシート名を表示する方法がわかりません。
そのようなことはできるのでしょうか?どなたかおわかりの方
よろしくお願いします。

A 回答 (1件)

関数は思いつかないのでユーザー定義関数を作ってみました。

対象とするセルが各シート共通の単一セルの例です。

例えば、Sheet2からSheet5までのセルB2を対象にする時、

 =MaxValueSheetName("Sheet2","Sheet5",B2) とします。

対象とするシートの最初がSheet2で最後がSheet5の意味です。
(当方、Excel2000です。しかしExcel2002はまだ触ったことがないため確認できていません。)


ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。
出てきたコードウインドウに下記コードをコピーして貼り付けます。

ここから

Function MaxValueSheetName(strSht As String, endSht As String, rg As Range)
  Dim w As Integer 'ワークシートインデックスカウンタ
  Dim maxRg As Range '最大値のセル

  Application.Volatile '自動再計算関数にする

  For w = Worksheets(strSht).Index To Worksheets(endSht).Index
    With Worksheets(w)
      If maxRg Is Nothing Then
        Set maxRg = .Range(rg.Address)
      Else
        '最大値のセルを求める
        If maxRg.Value < .Range(rg.Address).Value Then
          Set maxRg = .Range(rg.Address)
        End If
      End If
    End With
  Next

  MaxValueSheetName = maxRg.Parent.Name
End Function
    • good
    • 0
この回答へのお礼

nishi6さんありがとうございました。
うまくいきました。

お礼日時:2002/07/06 16:54

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