• ベストアンサー

Excel2003 ユーザー定義関数

お世話になります。 ユーザー定義関数について教えて下さい。バージョンはExcel2003です。 B268セルの数式をコピーしてB259~B281までその数式を貼り付けるような使い方をしたいのですが、ユーザー関数は関数の中身を変更しても再計算しないとのことで再計算されません。 セルひとつひとつに貼り付けを行っていくと再計算されましたが、さらに広範囲に一気にユーザー関数を使用した数式を貼り付ける使い方で、再計算させる方法はありますでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.1

お話のとおり、 ユーザ定義関数の計算式に含まれるセルが変化する、 または、計算式が埋めなおされないと 再計算がされません。 掲示された関数では、 アクティブセルが書き換わらないと (言い換えれば、ユーザ定義関数を埋めなおさないと) 再計算されません。 計算式の埋まったセルを 複数範囲のセルに複写しても アクティブセルが書き換わったことにはならないです。 提示された計算式を見る限り ユーザ定義関数を使わずとも =ROW()*3 という計算式で期待のことができます。 ユーザ定義関数で実現したいということであれば Function 日別勤怠(MyRange As Range) As Long  Dim i As Long  i = MyRange.Row  日別勤怠 = i * 3 End Function といった関数にし、 例えば、B2セルに =日別勤怠(A2) といった計算式を埋めます。

mihimarumaru
質問者

お礼

ありがとうございます。できました。 解説も付けて頂き、理解することもできました。

その他の回答 (2)

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.3

>回答No.1の方は「オブジェクト変数またはwithブロック変数が設定されていません。」 >というエラーがでます。 当方では正しく動作します。 記述ミスを疑います。 Office2003では動作確認していませんが それが原因とは考えにくいです。 それでもよくわからないようなら 入力しているコード、 エラー画面、 シート画面を示してみてください。

mihimarumaru
質問者

お礼

できました。 >B2セルに=日別勤怠(A2) の部分で記述ミスがありました。 お騒がせしました。 ありがとうございました。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.2

もう一案 期待のユーザ定義関数で、 かつ、引数を与えたくない、 つまり、 =日別勤怠() としたいのであれば、 Function 日別勤怠() As Long  Dim i As Long  i = Application.ThisCell.Row  日別勤怠 = i * 3 End Function といったコードでイケルと思います。

mihimarumaru
質問者

補足

申し訳ありません。もう一案のこちらの方はできたのですが、回答No.1の方は「オブジェクト変数またはwithブロック変数が設定されていません。」というエラーがでます。 補足頂けると助かります。

関連するQ&A

  • Excel2007 ユーザー定義関数の挿入

    いつもお世話になっています。 ユーザー定義関数を作ったのでワークシート内に挿入したいのですが 2003までのバージョンのように関数の挿入にユーザー定義関数の カテゴリが見つかりません。 ご存じの方教えてください。

  • Excel関数についてです。

    Excelを使っていて、数式表示は、コピー&貼り付けしないと、値にすることができないのですが、「数式」を「値」化する「関数」ってありませんか?なにぶんにも、Excel初心者なので、よろしくお願い致します。

  • ユーザー定義関数にて

    色つきセルの合計を数えるユーザー定義関数を使用していますが 普通の関数のように、セルに変更等ですぐに更新してくれればいいのですが 表示は前回のままです。(ですのでF9を押しています) 計算ではちゃんとした数字になっているのですが 更新が遅くて変更されません。 (セル範囲は縦で30個ぐらいです) すぐに更新するいい方法はないでしょうか? ご経験者の方々、知識ある方々の ご意見やアドバイスなどをよろしくお願いします。 色つきセルのカウント Function CountColor(計算範囲, 条件色セル) Application.Volatile CountColor = 0 For x = 1 To 計算範囲.Rows.Count If 計算範囲.Rows(x).Interior.ColorIndex = 条件色セル.Interior.ColorIndex Then CountColor = CountColor + 1 End If Next End Function

  • Excel2003からExcel2000への数式コピー

    友人の話なのですが、Excel2003から2000に数式をコピーしても計算がうまくできていないセルがあるとのことです。新しいバージョンから古いバージョンへの数式コピーは何か不具合が起こるのでしょうか?どうしたらうまくコピーできますか?

  • <Excel>表示形式のユーザー定義

    お世話になります。 Excelのセルの書式設定で表示形式をユーザー定義で設定した場合の質問です。 Excelで品名(それぞれ全く違う品目)の前に文字を追加したいとします。 その場合、ユーザー定義で「"文字"@」としますよね? ここまではいいのですが、この状態で並べ替えを行うと、@の部分を対象に並べ替えがされます。 私としては、"文字"の部分も対象にしたいのですが、どうすればいいでしょうか? 関数の場合はコピーして値で貼り付ければ、関数が排除されてコピーできるので、それで並び替えをすればできるのですが、ユーザー定義の場合はそれができません。 何かいい方法は無いでしょうか?

  • EXCEL2000 関数の使い方

    EXCEL2000 関数の使い方についておしえてください。 (状況) 1)シート1(請求書)とシート2(名簿)があります。 シート2は 列A 列B 列C    列D No 氏名 生年月日  年齢 1 A子 H11.11.1  7 2 B男 H13.8.18  5 ..と続いています。 2)シート1のセルB3(宛名欄)にシート2の名簿の中からB列「氏名」(「氏名」という名前で定義つけてあります)をリスト表示しています。 3)セルB3にリストから選択した人物の年齢をシート2から探して年齢(列D)をシート1のセルC32に表示させたいのですが、どのような数式になるでしょうか? VLOOKUP関数を使うのかな?と思ったのですが、シートが分かれていたり、リストとの合致の定義付けがよくわかりません。 検索個所:シート1のセルB3とシート2B列の一致した値 検索範囲:シート2のB1からD35(データという名前で定義付けています) 表示させたいセル個所:シート1のC32 数式の使い方など認識がまちがっていたり、わかりにくい説明になっているかもしれませんが、どうぞよろしくお願いします。

  • Excelのユーザー定義関数について

    win98seでExcel2000を使用しています。 標準の関数を使用する際、「挿入」→「関数」で「関数の貼付け」ダイアログがでますよね。その後、使用する関数名をクリックすとダイアログボックス内の下のほうに説明文が表示されます。 その説明文をユーザー定義関数にも付けたいのですが、どうすれば良いのでしょうか?どなたか宜しくお願いいたします。

  • エクセルユーザー定義関数(1)

    エクセル初心者です。 複数のセル範囲(例えばRange("A1:A100"))を入力させ、入力されたセル範囲すべてのセルを3乗した総和を求めるユーザー定義関数は作ること可能でしょうか? Function Y(a As Range) As Variant ここに、aで選択されたセル全てを3乗して総和を求める関数Yを定義したい。 End Function よろしくお願い致します。

  • 計算をしなくなった(Excel2002)

    Excel2002を使って毎日の売上を集計しています。 いまその作業をしようとしたら、計算しなくなってしまいました。 計算式は入力されています。 コピーペーストすると、ちゃんと計算式内のセルの数値も変化します。 昨日までは正常だったので、昨日の欄に数字を入力したら、それも計算しません。 計算式は単純な足し算などですので、使っている数式はSUM関数がほとんどです。 書式は0表示をしないように、ユーザー定義で#;#;としています。 本当に昨日までは正常に動いてました。 なにが悪いのでしょう? 全然見当がつきません。助けて下さい。

  • Excel2003のユーザー定義関数でセルに色をつけたい

    Excel2003のユーザー定義関数で、RGBの値を指定してセルに色をつけたいと考えています。 具体的には、 =CellColor(255,100,33) のように、RGBの値を引数にとり、そのセルに色をつけることは可能でしょうか? マクロを使えば可能ですが…。 また、同時にかなりの数の色を同じシートに出したいのですが、色の数に制限があるというのは本当でしょうか? そうだとすると、マクロで実現できたとしても不可能ですよね? 以上、よろしくお願いいたします。

専門家に質問してみよう