[[20060922093902]] 『別シートで同じ数式』(わかばマーク) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『別シートで同じ数式』(わかばマーク)
 こんにちは。教えて下さい。
 同一ブック内の別シート(セル位置は同じ)に同じ数式を入れる場合は
 マクロを使わないと出来ないでしょうか?
 現在、シート1〜5までのセルB2全てに
 =IF(OR(A1={"あ","い","う","え","お"}),1,IF(A1="か",2,IF(A1="さ",3," ")))
 のような式が入っています。今のままだと式の一部に変更があった場合
 全てのシートの式を修正することになり、手間がかかる上にミスも起こり易いかと
 思ったのですが・・・エクセル初心者(上の式も合っているのか不安)な上
 マクロを使えない事情があるので・・・どなたか詳しい方、ご教授お願いいたします。

 作業グループにすればできます。
 SheetタブをCtrlを押しながらクリックすると作業グループにできます。
 (ROUGE)

 ありがとうございます。出来ました!
 よろしければ、もう1つ教えて下さい。例えば後で修正(変更)が出た場合に
 同様の作業をすれば良いのは判るのですが、私だけがこのファイルを使う訳では
 ないので、もし、シート1のセルB2の式を修正した場合
 自動的?に他シートの同一式も修正されるようにする・・・
 と言うのは、やはりマクロになるのでしょうか?
 (わかばマーク)

 「同じ式」じゃないとダメなのですよね?
 「同じ値」でよければ、
 =シート1!A1  ← シート1のA1セルと同じ値

 (Ohagi)

 Ohagi様>
 そうなんです。シート毎にA列に入る値が違っていて
 結果、B列に返って来る値も違うのですが、導き出すための式は同じなのです。
 自分で修正する分には、ROUGE様の方法で出来るのですが、他の人が知らずに
 1つずつ直すのでは、ミスも起こりそうですし・・・
 ベースとなるシートを 作って、式の参照?とでも言うのでしょうか?
 が出来ないかなと・・・
 「どのシートでもB1に入る式はこれ!」みたいな感じで。
 うまく説明できなくてごめんなさい(汗)
(わかばマーク)

 マクロで制御案。
 Alt+F11を押して出てきた画面の左側にあるVBAプロジェクトのThisWorkbookをダブルクリック。
 右の白い画面に下記のコードを貼り付けて閉じる。
 すべてのシートを対象にしていますので、数式入力不要のシートがある場合には修正が必要です。
 (ROUGE)
'----
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Range, ss As String, ws As Worksheet
For Each c In Target
    If c.HasFormula Then
        ss = c.Formula
        For Each ws In Worksheets
            If ws.Name <> Sh.Name Then
                Application.EnableEvents = False
                If c.HasArray Then
                    ws.Range(c.Address).FormulaArray = ss
                Else
                    ws.Range(c.Address).Formula = ss
                End If
                Application.EnableEvents = True
            End If
        Next
    End If
Next
End Sub

 「マクロを使えない事情がある」って書いてありますけど、、、。
(純丸)(o^-')b ※それで自分も考えあぐんでまする。

 =INDIRECT(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)&"!$A$1")
 で、ワークシート名が可変になると思うので…

 =IF(OR(INDIRECT(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)&"!$A$1")={"あ","い","う","え","お"}),1,
  IF(INDIRECT(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)&"!$A$1")="か",2,
  IF(INDIRECT(MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)&"!$A$1")="さ",3," ")))

 (Ohagi)

 マクロじゃないと無理でしょう..
 どのシートのセルを変更するのか不明なんでしょ? (seiya)

 皆様ありがとうございます。
 やはり、簡単(?)なのはマクロなんですね(^_^;)
 事情・・・と言うほどでもないのですが、主にこのファイルを使う会社の人が
 エクセルとCADの区別も付かない様なおじさんで、マクロ=ウイルスと
 思い込んでいるのか、マクロ使ってあると削除されるんです(汗)
 せっかく教えていただいたので、おじさん説得して、ROUGE様の方法とOhagi様の方法
 両方試してみます。
 (わかばマーク)


 基本のシートの B2 (どこでもよい) に、
 IF(OR(A1={"あ","い","う","え","お"}),1,IF(A1="か",2,IF(A1="さ",3," ")))  と入力。
 ^^ = は、入れない。
 挿入>名前>定義で
  名前を keisan
    参照範囲を =EVALUATE($B$1)  と入力してOKをクリック。
 シート1〜5までの B2 には、=keisan+Now()*0 と入力。
 これで、基本シートのB2に入れた数式が適用されます。
 って、いくらマクロを使わないからと言ってもかえってややこしすぎるかも。
(純丸)(o^-')b

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.