エクセル2000マクロでの計算表示方法とは?

このQ&Aのポイント
  • エクセル2000マクロを使用して、セル(F1)に入力されたデータに基づいて、セル(F2)、セル(G2)、セル(H2)に計算結果を表示する方法について教えてください。
  • 具体的には、F1に入力されたデータを元に以下の計算を行い、セル(F2)、セル(G2)、セル(H2)に結果を表示します。
  • また、F1の値が変化した場合にも同様の計算が行われ、セル(F2)、セル(G2)、セル(H2)に最新の計算結果が表示されます。
回答を見る
  • ベストアンサー

エクセル2000マクロでの計算表示

セル(F1)に3というデータが仮に入っているとします。 セル(F2)2、セル(G2)1、セル(H2)に12という計算で表示させたい 場合はマクロではどう記述すればよいでしょうか。 仮にF1に2というデータが入ってきた場合は、 セル(F2)1、セル(G2)12、セル(H2)に11という計算で表示させたい。 下記に表示例を示しています。 F1が1の場合 12、11、10    4の場合 3 2 1    5の場合 4 3 2 6の場合 5 4 3 7の場合 6 5 4 8の場合 7 6 5 9の場合 8 7 6 10の場合 9 8 7 11の場合 10 9 8 12の場合 11 10 9 教えてください。

noname#72697
noname#72697

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

  • ベストアンサー
  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.1

マクロではないですが計算式で セルF2 =if(F1>1,F1-1,F1+11) セルG2 =if(F1>2,F1-2,F1+10) セルH2 =if(F1>3,F1-3,F1+9) とすればよいと思います。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

諸解答の内で一番簡単で,判りやすいコーディングではないでしょうか。 テーブル方式の利点が出ていると思います。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) a = Array(0, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 12, 11, 10) For i = 1 To 12 If Worksheets("sheet1").Cells(1, 6) = a(i) Then Worksheets("sheet1").Cells(2, 6) = a(i + 1) Worksheets("sheet1").Cells(2, 7) = a(i + 2) Worksheets("sheet1").Cells(2, 8) = a(i + 3) End If Next i End Sub

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

ifを登場させない方法で・・・ Sub Zengetu()   Range("F2") = ((Range("F1") + 12 - 1) - 1) Mod 12 + 1   Range("G2") = ((Range("F1") + 12 - 2) - 1) Mod 12 + 1   Range("H2") = ((Range("F1") + 12 - 3) - 1) Mod 12 + 1 End Sub 数字に12を足して、1を引いて0~11または12~23になります。 これの12で割った余りを出してます。 1年前のカレンダーで計算している雰囲気です。

回答No.3

これは、F1の値から1ずつ減らした数を(上限が12)それぞれのセルに表示するということでいいのでしょうか? 今月が1月なら1ヶ月前は12月とか。 いろんなやりかたがあるんですよね~ Sub test() Dim I as integer Dim A as integer A=Val(Range("F1")) For I=1 to 3 A = A - 1 if A < 1 Then A=12 End If Select I Case 1 Range("F2")=A Case 2 Range("G2")=A Case 3 Range("H2")=A End Select Next

  • peso
  • ベストアンサー率41% (40/97)
回答No.2

このようなものでどうでしょうか? おそらく、不必要な部分もあると思いますが・・・ If IsNumeric(Range("F1").Value) = True Then If Range("F1").Value > 0 And Range("F1").Value < 13 And Int(Range("F1").Value) = Range("F1").Value Then If Range("F1").Value = 1 Then Range("F2").Value = 12 Else Range("F2").Value = Range("F1").Value - 1 End If If Range("F2").Value = 1 Then Range("G2").Value = 12 Else Range("G2").Value = Range("F2").Value - 1 End If If Range("G2").Value = 1 Then Range("H2").Value = 12 Else Range("H2").Value = Range("G2").Value - 1 End If Else Range("F2").Value = "" Range("G2").Value = "" Range("H2").Value = "" End If Else Range("F2").Value = "" Range("G2").Value = "" Range("H2").Value = "" End If

関連するQ&A

  • EXCEL マクロ(2)

    EXCEL マクロ B1セルからF1 B2セルからF2 B3セルからF3 までとに文字"T"のデータであるセルがあります。 (1) その数をカウントして各G1,G2,G3に入れる処理 をどのようにかけばいいですか。

  • excel マクロ

    エクセル マクロ 時間の計算 ・まずルールとして決められた時間 今回は『 8:00 』~『 17:00 』以外の時間外の『 同一日付 』の日付の計算をする エクセルのマクロを組もうと考えています。少し複雑な内容になります 考えている 作業としては 具体例を挙げますが (1) 『 同一日付 』の『 8:00 』~『 17:00 』《 以外にある時間外 》のまとめをしたい (2) この場合 08:30や16:50には反応せず 時間外の17:01~翌日の08:00までの時間外に反応するもの (3) その際 作業判定させるセルは横に並んだA、B、C、D、E、F、Gの中の『 C 』『 D 』『 E 』『 F 』『 G 』の与えられたデータで判定 (4) 基本的には下の例、 縦に並ぶ『 D 』セル内の 2012/07/10、7/12..と続く『 同一日付 』の時間外の時間を比較して (5) 『 同一日付 』の列の『 8:00 』~『 17:00 』《 以外にある時間外 》の 『 F 』と『 G 』セルの数字の最初の数字(時間)と最後の数字(時間)を取得し (6) 『 同一日付 』の列の『 8:00 』~『 17:00 』《 以外にある時間外 》の時間が重なっている 『 それ以外の時間 』には数字の上にーを引き《 エクセルの[ CTRL ]+数字の[ 5 ] 》で 引ける取り消し線 ーを引く 例 基本的に『 F 』に最小時間、『 G 』に最大時間が表示されます ≪総合判定で述べる判定方法では例外ありますが≫  17:10~17:20、 17:20~17:50とあれば 17:10~17:50と書き 『 (7)説明の動き 』   それ以外の時間には(6)の取り消し線を引きたい この際は17:10~17:20、 17:20~17:50の17:20に(6)の取り消し線を引きたい ※ 取り消し線を引いた行のセルの『 H 』セルのデータは削除 (7) 例 『 D 』セル内の 2012/07/10 の『 同一日付 』が終わる『 下のセル 』に 例( ● )黒丸の場所にセルを挿入し一旦『 空白を空け 』 その一旦『 空白を空け 』た『 A 』のセルに『 最初と最後の時間 』と書き込み その行の『 F 』と『 G 』に『 同一日付 』の数字の最初の数字(時間)と最後の数字(時間)と 『 G 』から『 F 』を引いた時間『 H 』の書き込みを 自動で処理し書き込むマクロを作りたいのです 例   A     D      F  G   H      2012/07/10   17:10 17:20 0:10      2012/07/10   17:20 17:50 0:30 ↓   A     D      F  G   H      2012/07/10   17:10 17:20                   ×      2012/07/10   17:20 17:50  セル挿入          × ●『 最初と最後の時間 』 17:10 17:50 0:40 ×が取り消し線あり (8) ・『 D 』セル内の比較する『 同一日付 』は『 縦に並んでおり 』、1つの時もあれば多くて20個 ・基本的に20日~翌月20日まで(土日祝が20日に当たれば18日~20日など前後しますが) (9) ・(5)のデータを取得し(7)の動きで『 同一日付 』の数字の最初の数字(時間)と最後の数字(時間) を書き込むので(7)で書き込む以外の 『 同一日付 』内の時間外の時間にはすべて取り消し線を引きます ・数字の上にーを引き《 エクセルのCTRL+数字の5 》で 引ける取り消し線を引き..が説明のテキストでは表現出来ませんでしたが..必要な作業です 例で 『 時間の下に× 』を書いて見ましたが、これが基本的な取り消し線を実行した感じの時です ◎ さらにここから先が総合判定要素として複雑なのですが『 同一日付 』内の時間外の時間の判定の仕方として 1.『 E 』セルに 《 休 》 表記あれば基本的に何も判定、動作なしでそのままの表記でOK。 ただし『 C 』セルに以下に説明する表記ある場合を除きます 2.『 C 』セルに『運転』と『予約』表記あり、その中で『停止』表記が出てきた場合には →『停止』表記の『 F 』のセルの数値を『最大値』として判定し(9)の動作の動き 『運転』と『予約』表記あり、その中で『停止』表記が出てきた場合には  その数値を『最大値』として判定し(9)の動作の動き(その時間は『停止』表記の時には『 G 』ではなく『 F 』に出てきます。) 3.『 C 』セルに『予約』、『予約取り消し』と連続して表記ある場合 『 同一日付 』で『 C 』セルに『予約』、『予約取り消し』と連続して表記があり、 『 D 』の日付『 F 』『 G 』の時間も同じならば(9)の動きで、その2行の『予約』、『予約取り消し』の 『 F 』『 G 』の時間には取り消し線、その2行の下に(9)の動きで『 H 』の場所に0:00と書き込みしたいのです 例   A   C     D      F   G   H      予約   2012/07/10  17:00 19:00 2:00    予約取り消し 2012/07/10  17:00 19:00 2:00 ↓   A   C     D      F   G   H      予約   2012/07/10  17:00 19:00                    ×  ×      予約取り消し 2012/07/10  17:00 19:00                    ×  × セル挿入           ●『 最初と最後の時間 』     17:00 19:00 0:00 4. 『 C 』セルに表記あるものとして『運転』『停止』『予約』『予約取り消し』の4種類の表記があります 5.『 同一日付 』の列の『 8:00 』~『 17:00 』《 以外にある時間外 》の処理を行いたいのですが 場合によっては『予約』や『運転』で処理動作の必要のない時間内から、動作の必要な時間外へと『予約』『運転』されている場合もあり 例 今回は『 8:00 』~『 17:00 』以外の時間外の処理なので、『 E 』の休日ではなく( 休日は◎の総合判定あれば処理必要 ) 6. 時間内~時間外へと進む時間外の処理動作 平日の『予約』や『運転』『 16:00 』~『 19:00 』の場合 ≪ 16:00 ≫~≪ 17:00 ≫は時間内なので動作処理の必要はなく 処理としては指定した時間  今回は『 8:00 』~『 17:00 』内の時間であれば  ≪平日≫の『予約』や『運転』『 16:00 』~『 19:00 』や『 06:00 』~『 08:00 』の場合 (9)の要領で 『 17:00 』~『 19:00 』とその時間内を含むセルの下に≪ 訂正 ≫をしてから処理したいのです 例   A     D      F  G   H      2012/07/10   16:00 19:00 3:00 ↓   A     D      F  G   H      2012/07/10   16:00 19:00                ×  × ●セル挿入 ≪ 訂正 ≫  17:00 19:00 2:00  ×が取り消し線あり 上手く伝えられているか分かりませんが、どうぞよろしくお願い致します

  • Excel 2007のマクロ記述について

    Excel 2007で、B4セルからI最終行までの整数のみを小数点以下1桁にする処理をマクロで実行したいのですが、どのように記述したらよいか教えてください。 最終行とはI列にセルの値がある最後の行です。 下記の例のマクロ実行結果は、1→1.0、2→2.0となります。 (例)      列      A  B    C    D    E   F  G   H  I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2   2  2   CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6   1   1  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1   1  1.5  1.5  CIRCLE  CIRCLE マクロ実行結果      列      A  B    C    D    E   F  G   H   I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2  2.0  2.0  CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE

  • EXCELのマクロで。。。

    シートAのセルC2の値(数字)を シートBのE、F、Gの各列のうち空いている一番左のセルで、かつ、D列に何か書いてある一番下の行のセル に転記したいです。 たとえば、シートBが図のような場合にはF28です。これが毎回、変化します。 マクロの記述を教えて下さい。よろしくお願い致します。

  • Excelマクロにて30分単位の計算方法について

    Excelのマクロにて30分単位の計算方法についてご存知の方宜しくお願いします。 8:01~8:30のデータを8:30に変換 8:31~9:00のデータを9:00に変換 という様に30分単位で時間の切り上げ計算 8:00~8:29のデータを8:00に変換 8:30~8:59のデータを8:30に変換 という様に30分単位で時間の切り捨て計算 セルにCEILING(A1,"0:30")やFLOOR(A1,"0:30")を使用して記述しても良かったのですが パターンが多すぎてセルに記述する事が出来ませんでした。(文字数制限の為) ので、マクロでの記述方法をご存知の方宜しくお願いします。

  • Excelの表示について

    Excelでタイムカードを作成しました。 出勤・退社時間を入力すると通常勤務時間や残業時間等が計算されるように計算式を組んでいます。 出勤・退社時間を入力したときは問題なく計算され時間が表示されるのですが、 休日の際、出勤・退社時間を入力しなかった場合、通常勤務時間や残業時間のセルが「#######」と表示されてしまいます。 「#######」と表示されるのを空欄にしたいのですが、下記式のどこに何を追加すればいいのかわかりません。 どなたかご教授願います。 通常勤務時間のセル(H6)式:     =IF(F6<$G$2,F6-E6-TIME(0,G6,0),$G$2-E6-TIME(0,G6,0)) F6:退社時間 G2:定時退社時間 E6:出勤時間 G6:休憩時間(70分)

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

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

  • エクセルのマクロ記述について

    下記の処理をエクセルのマクロで行いたいのですが、どのように記述したよいか教えてください。 4行目から入力されている行まで下記の処理をマクロで行う。 1.J列のセル入力がCIRCLEの行で、B~E列の数値が同じセル間を結合する。 2.K列のセル入力がCIRCLEの行で、F~I列の数値が同じセル間を結合する。 3.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じ場合、B列をB列の数値XC列の数値とし、B~E列のセルを結合する。 4.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じ場合、F列をF列の数値XG列の数値とし、F~I列のセルを結合する。 5.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じでない場合、B列をB列の数値XC列の数値とし、B,C列のセルを結合する。又、D列をD列の数値XE列の数値とし、D,E列のセルを結合する。 6.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じでない場合、F列をF列の数値XG列の数値とし、F,G列のセルを結合する。又、H列をH列の数値XI列の数値とし、H,I列のセルを結合する。 7.J列のセル入力がSHAPEの行で、B~E列は何もしない 8.K列のセル入力がSHAPEの行で、F~I列は何もしない

  • EXCELでマクロを使った検索&自動計算をするには?

    いつもいろんな方に回答いただき大変助かっております。 まずはそのお礼をさせていただきます。ありがとうございます。 さて、本題ですが、 基本データとして「名前」「金額」「とある数値データ」が各々「A列」「B列」「C列」に100件未満が並んでいます。 (例)    A列 B列 C列 1行 あ様 1000  50 2  い様  10   0 ↓  ↓  ↓  ↓ 100  を様 5000 2500  そして別の場所(同じシート内)に「名前」「金額」「とある数値データ」と、同じ内容が書き込めるスペースを作り、ここにデータを入れてマクロを実行すると、既存のデータ(A~C列)の同じ名前の人へ「金額」「とある数値データ」を加算するものを作りたいのです。 (例)【基本データ】    【加算データ】    A列 B列 C列 … F列 G列 H列 I列 1行 あ様 1000  50   名前 金額 数値 ★★ 2  い様  10   0   あ様  10  62 ↓  ↓  ↓  ↓ 100  を様 5000 2500 ←マクロ実行後、5000に10が足される  マクロを実行後は加算データの入力欄(例ではF2:H2)内の数値が消されすぐに次のデータが入力できるように出来れば尚いいです。 また、A列に追加データに入力したF2と同じ名前がなかった場合、I1(★★の部分)に「該当無し」と表示したいのです。 該当がなかった場合は手入力でA列に名前を新しく入力して金額・数値を入力しますので、判定が必要なのです。 このような内容をするにはどうしたらよいのでしょうか? ちなみにマクロの実行は追加欄の近くにオートシェイプなどでボタンを作りクリックすることでマクロを起動させたいと考えています。 乱文かつ長くなりましたが、どなたか指導いただける方よろしくお願い致します。

  • エクセルマクロで別のシートを検索して表示

    エクセルのマクロで次の様な検索が出来るようにしたいのです。 シート1にあるセル(毎回同じセルとは限らない)に、 「出席者」という文字が入っています。 その直下のセルに名前(毎回違った名前)が入っています。 例 A5=出席者 A6=山田、田中、鈴木 この名前(例のシート1のA6)データをシート2の特定のセルに表示させたいのです。 シート2にボタンを配置してそれをクリックしたら表示できるという風に。(シート2の特定のセルは仮にB10とします) 出席者と名前は毎回同じ位置関係ですが、 表示されるセルは決まっていません。 このような作業をマクロで出来ますか? 出来るのでしたらそのマクロを教えて頂けますか? 初心者です、分かり易い回答をよろしくお願いいたします。

専門家に質問してみよう