【Excel VBA】計算結果のみ表示させたい

このQ&Aのポイント
  • Excel2003を使用しています。あるデータ(表)を別のレイアウトに変更する作業をマクロで処理したく、コードを書いているところです。
  • F列に[=G列-H列]の数式が入力されていて、別のレイアウトに変更後は、G列とH列は不要になるので削除します。しかし、列削除をしてしまうと、F列の値が「#REF!」となってしまうので、F列には、数式ではなく、計算結果(値)のみ表示させたいのです。
  • 一旦、F列以外の別のセルに計算結果を出して、その値のみをF列にコピーしようかとも思いましたが、もし良い方法があれば、教えていただきたく、質問させていただきました。
回答を見る
  • ベストアンサー

【Excel VBA】計算結果のみ表示させたい

Excel2003を使用しています。 あるデータ(表)を別のレイアウトに変更する作業をマクロで処理したく、コードを書いているところです。 F列に[=G列-H列]の数式が入力されていて、別のレイアウトに変更後は、G列とH列は不要になるので削除します。でも、列削除をしてしまうと、F列の値が「#REF!」となってしまうので、F列には、数式ではなく、計算結果(値)のみ表示させたいのですが、どのようにすればいいでしょうか? 一旦、F列以外の別のセルに計算結果を出して、その値のみをF列にコピーしようかとも思いましたが、もし良い方法があれば、教えていただきたく、質問させていただきました。 よろしくお願いします。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

処理の適当な所(処理前のデータコピーや削除前)で、 同じ場所に値貼付けをすれば良いのでは? Range("A1:B7").Copy Range("A1").PasteSpecial Paste:=xlValues

rx-z5815
質問者

お礼

回答ありがとうございます。 >同じ場所に値貼付けをすれば良いのでは? 同じ場所に値を貼り付けるということは思いつきませんでした。。。 ありがとうございました。

関連するQ&A

  • Excel2003VBA 行の非表示

    お世話になります。 掲題の件で ご相談が御座います。 ある特定の列(連続した4列F、G、H、Iです)が全部「0」だった場合 その行 全体を非表示にするというマクロを組みたいのですが 未熟者の為 どのようなコードを記述したら良いのか分からず困っております。 どなたかご教示いただけませんでしょうか。 F、I列は数式により「0」と表示されています。 G、H列は値で「0」になっております。 表全体は600行ぐらいまでですが、今後増える可能性があります。 (増えても800行までは行かないと思います) 説明不足等が御座いましたら ご指摘ください。 宜しくお願い致します。

  • 【Excel】正しい計算結果が得られない

    Excel2003を使用しています。 B列は日付、C列は摘要欄、E列・F列は金額データが入力されています。 C列に『n月計』と入力された行のE列・F列に下記の数式(E269セル、F269セルの場合を記載)をマクロボタンをクリックすることにより、入力できるようになっています。 E列: =SUMPRODUCT((MONTH($B$4:$B268)=VALUE(LEFT($C269,LEN($C269)-2)))*(E$4:E268)) F列: =SUMPRODUCT((MONTH($B$4:$B268)=VALUE(LEFT($C269,LEN($C269)-2)))*(F$4:F268)) 4月計~12月計までは、問題なく上記の数式で集計できていたのですが、1月計を同様の操作で数式を入力したところ、正しい集計結果を得ることができません。 以前は、単純にSUM関数を使用して、その月のデータを都度、手作業で範囲選択していましたが、同様のシートが40枚ほどあるため、マクロボタンをクリックすることで、集計の数式が入力できればと思い、作成したのですが…。 どういった原因が考えられますでしょうか? よろしくお願いします。

  • 【Excel VBA】複数の条件を満たすデータを行削除

    Excel2003を使用しています。 ある表の中のデータで、次の4つの条件を満たすデータを行削除したいのですが、マクロではどのように書いたらいいのでしょうか?  E列…データが入力されている  F列…空白  G列…空白  H列…空白 よろしくお願いします。

  • [Excel]入力規則の数式が計算されずエラー表示も出ないようになりま

    [Excel]入力規則の数式が計算されずエラー表示も出ないようになりました お世話になります。(先日もこちらではお世話になりました。ありがとうございます。) EXCEL 2007 を使用しています。 入力規則を使用して数式を実行したいと思い 初めて[入力規則]-[ユーザー設定]-[数式]欄に数式を書いて結果を得ようと してみたのですがエラーとなってしまいました。 数式に間違いがあるらしいエラーだったため何度か数式を見直し・やり直したのですが、エラーでした。 入力規則ではなく普通のセルにこの数式を入れると問題なくほしい値が帰ってくるので、 なぜ入力規則では、エラーが出るのか分かりません。 また、何度も入力規則をやり直しているうちに エラー表示ウィンドウが出なくなりました。出ないだけなら成功したと思うのですが、 エラーウィンドウが出ないだけで、数式は実行されません。 入力規則の全ての値をクリアにしてから再度 設定、式を入力しても エラー表示ウィンドウも値も出てきません。 試しにA1セルに簡単な数式を入力規則で行ってみました。 =1+2+3 とか =SUM(B1:D1) (↑値は6になる) これでもエラーも数式の結果となる値もでません。 ちなみに入力規則のリスト表示など他の機能は問題なく値が帰ってきます。 何か間違っているのでしょうか? ちなみに入力規則に記入したかった数式は↓になります   =IF(INDIRECT("F"&ROW())>0,ROW()-2," ") 数式の説明: ・もしF列のこのセルと同じ行に何か値が入っていれば【行-2】になる値を表示   A3セル 入力規則を適用   F3セル 何か値が入っている   A3セル A3といのは3行目のことだから 3-2=1 となり、計算結果の 1 が表示される ・もしF列のこのセルと同じ行に何も値が入っていなければ空欄のままにする というものです。 お分かりになる方いらっしゃいましたらご教授下さい。 よろしくお願い致します。

  • Excel2007で「速度」の計算結果を表示したい

    質問の通りです。 現在、画像のように執筆した文字数と時間を表にして、 執筆速度を出しています。 それぞれのセルには計算式を入れていますが、 G列H列を時刻表記にすると、I列が上手く表示されない為、 現在は表示形式を「標準」にして計算するようにしています。 しかしこの状態だと、G8H8のように表記するとI8は「46」と 表示されてしまう弱点が出てきてしまいます。 (画像のI8は、手入力で数字を入れています。) エクセルのことだから、分速を計算する関数くらいあるのではないかと 思い、検索をかけてみましたが、エクセルの計算速度を上げる 方法ばかり出てきて、思っている様な答えが見つかりません。 (現在J列には、「=F列/I列」の関数を入れてあります。) 質問内容をまとめると ●G列~I列を上手く時間で表示できるようにしたい ●I列を時間表示にした上で、J列を分速表示にしたい の2点になります。 長くなりましたが、どうかお力をお貸し下さい。

  • 【Excel】時間計算について

    Excel2003を使用しています。 残業時間の計算について、下記のような場合、F2とG2には、どのような数式を入力すればいいでしょうか? 22時以降は深夜残業となりますので、終了時刻が22時を過ぎた場合は、その部分の時間をG列の深夜残業に表示し、22時まではF列の残業に表示させたいのです。表示形式は、C列とE列は『時刻』、F列とG列は『h"時間"mm"分"』になっています。    C列     E列        F列      G列 1  開始時刻  終了時刻  残業      深夜残業 2  17時30分  23時30分  4時間30分  1時間30分 IFで条件分岐して入力してみたり、過去の質問も検索してみましたが、思うように表示させることができませんでしたので、質問させていただきました。 よろしくお願いします。

  • VBAで列に計算式を入れたい

    お世話になります。 sheet1のG列全体にVBAで数式を入れて、 deleteキーを押しても式が消えないようにしたい思っています。 G1=D1*F1 ~ G65536=D65536*F65536(G列=D列*F列) のように同じ行同士の計算で、 G列全体に式を入れたいと思っています。 よい方法ご存知の方いらっしゃいましたら 宜しくお願いします。

  • 【Excel VBA】ThisWorkbook モジュールのマクロ

    Excel2003を使用しています。 39枚のシートから成るBook1のThisWorkbook モジュールに、C列に“○月計”と入力されたら、その行のE列、F列、G列へ数式を入力するコードを書いています。 現在は、それぞれのシート(39枚のシートのうち3枚を除く36枚)のC列最終行から2行下のセルへ“○月計”と手入力していますが、マクロで“○月計”と入力されるようにすれば、ThisWorkbook モジュールに書いているコードも実行されて、数式の入力までマクロで処理できるのかな?と思い、試しに、36枚それぞれシートのC列最終行から2行下のセルへ“○月計”と入力されるようコードを書いてみました。 …が、そうではないのか、それぞれのシートのC列最終行から2行下のセルへ“○月計”と入力されるものの、E列、F列、G列へ数式は入力されません。 せっかくなので、できることなら数式の入力までマクロで処理したいのですが、どのようにしたらThisWorkbook モジュールに書いているコードまで実行されるのでしょうか? よろしくお願いします。

  • EXCEL2003出納帳残高欄の、計算結果がある最終行の数値を取り出し

    EXCEL2003出納帳残高欄の、計算結果がある最終行の数値を取り出したいのですが     A     B     C     D 1  日付   入出金   残高 2  繰越          30 3 8/1   100   130 4 8/2  -130     0 5 8/2    40    40 6               - 7               - 8               - 9                現在残高 40        途中には空白行はなく順に入力します 入力する行数は未確定です 残高は"0" の場合もあります C列2行目は 数式「=B2」  C列3行目から8行目までは 数式「=IF(B3=0,0,C2+B3)」 現在残高を表示したいのですが、 ここD列9行目には数式 「=LOOKUP(10^5,C3:C8)」 としてますが、 C列の6~8行目までは計算式が入ってるので、 その値”0”となってしまうようです。 また、 数式「=INDIRECT(ADDRESS(COUNT(C2:C8)+1,3))」 という式も入れてみましたが、”0”となってしまいます。 計算結果のある最終行の値 "40" にするにはどうしたらよいでしょうか?

  • [EXCEL]計算式について教えてください

    --F-+---G--+ 100 2000/1 150 2001/3 200 2002/10 300 2003/2 400 2004/2 500 2005/2 EXCELにて、上記のようにF列G列に値が入っている場合 たとえば、過去から2002/2までのF列の値を合計するには 「=SUMIF(G1:G6,"<2002/03/01",F1:F6)」で、250を求めることができます。 次に、2002/3~2003/3までのE列のデータの和(500)を求める場合の式を 「=SUMIF(G1:G6,"<2002/03/01",F1:F6)」と同じような式で 求める式を教えてください。

専門家に質問してみよう