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