- ベストアンサー
[EXCEL]関数取り出しについて
EXCELファイルのセルに関数が入っていて これを一覧表で参照する方法はありますか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
新しいシートを挿入して、全てのシートの算式を表示します。 1シート2列を使い、シート名、セル番地と算式を表示します。 『=1000』は式として評価しませんが『="1000"、="ABC"』は式としています。 シート数128枚まで対応しています。これ以上なら少しコードを変える必要があります。 下のコードを標準モジュールに貼り付けます。 Sub FormulaPrint() Dim addSheetName As String '追加したシート名 Worksheets.Add.Move after:=Worksheets(Worksheets.Count) addSheetName = ActiveSheet.Name Dim ws As Worksheet 'ワークシート Dim rg As Range 'セル Dim rw As Long, col As Long '行、列カウンタ On Error Resume Next '算式のないシートは飛ばす col = 1: rw = 1 For Each ws In Worksheets ws.Select: Selection.SpecialCells(xlCellTypeFormulas).Select With Worksheets(addSheetName) For Each rg In Selection '『=100』などは式としない If rg.HasFormula And IsNumeric(Mid(rg.Formula, 2)) = False Then rw = rw + 1 .Cells(rw, col) = rg.Address(0, 0) 'セル番地 .Cells(rw, col + 1) = "'" & rg.Formula '算式 End If Next: ws.Range("A1").Select If rw >= 2 Then .Cells(1, col) = ws.Name: col = col + 2: rw = 1 End With Next End Sub
その他の回答 (4)
- kazuhiko5681
- ベストアンサー率49% (79/159)
はじめまして。サンプルマクロを作ってみました。参考にしてみて下さい。 このサンプルマクロは、A1~M100にデータが入っているとしてN列以降のA1~M100に数式が入っている行と同じ行に数式を取り出して表示させています。 データの入っているセル番地が違う時は、 For Each myRange In Range("A1:M100")の("A1:M100")を最初のセル番地と最後のセル番地に変更して実行して下さい。 1.データの入っているブックを開く。 2.Sheet1にコマンドボタンを1個配置する。 ・ファイルメニューにマウスポインターをあわせて右クリックし、出てき たプルダウンメニューのVisual Basicをクリックする。 ・出てきたツールバーの右から3番目(コントロールツールボックス)をク リックし、コントロールツールボックスの一番右側の上から2番のコマ ンドボタンをクリックし、シートの適当な位置でクリックする。 ・ツールバーの2番目(デザインモード)のボタンが押された状態になって いたらそのボタンをクリックしてOFFの状態にする。 3.ALT+F11を押してVBE画面を立ち上げ、VBAProjectと書いてある下のSheet1の部分にマウスポインターをあわせてダブルクリックし、右側の白い部分に下記のコードをコピー・ペーストする。 4.ALT+F11を押してシート1の画面に戻り、データを入力後コマンドボタンを押す。 あなた様のおやりになりたいことが実現しているはずです。 Sub test() Dim myRange As Range Dim myCounter As Integer Dim myBook As Workbook Dim myWbn As String If Range("A1").HasFormula Then For Each myRange In Range("A1:M100") If myRange.HasFormula Then myRange.offset(0,13).Value = myRange.Formula End If Next End If End Sub
- nishishi
- ベストアンサー率39% (17/43)
これでmari4lvkatu5さんの思いどうりになるかどうか 置換で検索する文字列を「=」(スペース)置換後の文字列を 「 =」(半角スペースとイコール)で式のすべてを文字列にかえて 別のシート等へコピー&ペーストし反対の置換をおこなえばどうでしょうか ただし、式に条件式が入っていると(イコールが複数)式が狂ってしまいます。
- imogasi
- ベストアンサー率27% (4737/17069)
VBAで良ければ Sheet1の式に付いて、セル位置と式をSheet2に出します。 Sheet1の式のあるセル範囲を(広めに)指定して実行。 Sheet2を印刷して、ゆっくり、その式をデスクでチェックすると利用価値がありますよ。 Sub test01() i = 1 Dim cl As Range Worksheets("sheet1").Activate For Each cl In Selection If cl.HasFormula Then 'MsgBox cl.Formula r = cl.Row: c = cl.Column Worksheets("sheet2").Cells(i, 1) = r & "," & c Worksheets("sheet2").Cells(i, 2) = "'" & cl.Formula i = i + 1 End If Next End Sub
- minarai
- ベストアンサー率30% (167/540)
数式を表示したいってことでよいのですか? だったら、ツール(t) -オプション(o) 表示タブの中の 数式(R) です。
補足
ご回答ありがとうございます。 ファイルに式が入っているセルがあれば、その式を抜き出すということです。 -----C--------------+ =SUM(A1:A5) 2 4 =IF(B2=a,"○","×") =SUM(A1:A10) =100 上記であれば、1行目、4行目、5行目に式が入っていますので 他のファイルなどに、 「=SUM(A1:A5)」「=IF(B2=a,"○","×")」「=SUM(A1:A10)」の式自体を 取り出したいのです。 よろしくお願いします。