• ベストアンサー

3D集計による最大値とシート名の表示方法

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

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

asakun
質問者

お礼

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

関連するQ&A

専門家に質問してみよう