• ベストアンサー

エクセル2000マクロ操作について

nishi6の回答

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

質問の主旨は、合計表を作成するマクロですよね。 上の表はSheet1のA1から、下の表はSheet2のA1から(表題無し)作成されているとします。 1.合計はマクロを使わなくても可能でしょう。  B4セルに   =SUM(IF(Sheet2!$A$1:$A$3=B$1,IF(Sheet2!$B$1:$B$3=$A4,Sheet2!$D$1:$D$3,0)))  として、Ctrl+Shift+Enterで配列数式とすれば計算できます。 2.ピボットテーブルでも簡単にできます。 3.マクロで行うと、以下のようなコードになりました。 標準モジュールに貼り付けます。(合計表の項目数、データ数は自動計算しています) ご参考に。 Public Sub Syukei()   Dim wsTTL As Worksheet '集計表のあるシート   Dim wsDat As Worksheet 'データのあるシート     Set wsTTL = Worksheets("Sheet1")     Set wsDat = Worksheets("Sheet2")   Dim rw As Long '集計表の行   Dim col As Integer '集計表の列   Dim TTL As Double '合計値   Dim dataNum As Long 'データ数   Dim rwDt As Long 'データの行カウンタ   'データ数を求める   dataNum = wsDat.Range("A1").End(xlDown).Row   Range("A1").Select   '各合計値を求める   For rw = 2 To wsTTL.Range("A2").End(xlDown).Row     For col = 2 To wsTTL.Range("B1").End(xlToRight).Column       TTL = 0       With wsDat         For rwDt = 1 To dataNum           If wsTTL.Cells(rw, 1) = .Cells(rwDt, 2) Then             If wsTTL.Cells(1, col) = .Cells(rwDt, 1) Then               TTL = TTL + .Cells(rwDt, 4)             End If           End If         Next         wsTTL.Cells(rw, col) = TTL '集計表に書き込み       End With     Next   Next End Sub

関連するQ&A

  • エクセル マクロでの行挿入は・・・・

    マクロを勉強中です。 特定の列の値(下の表では5列の『サブコード』です)が、 4~6 の時に、1行挿入し上の行のコピーを貼りつけ、 7~9 の時は、2行挿入して上の行をコピー貼りつけ・・・ という作業が、マクロでできますでしょうか? ご回答を、お待ちしております。 どうか、よろしくお願い致します (u_u)

  • VBA(マクロ)について

    エクセルのマクロを使って下記のように実行を考えています。 A列のコード番号が一定ではないため、処理に困っています。 どなたかアドバイス頂けないでしょうか。 詳細についてです。A列にコード番号があり、B列に数値があります。 例えば、A列の1~3行目まで100とあり、4~5行目まで400と1~3行目と4~5行目の数値はおなじです。3行分だったり2行分だったりと不規則に下に続いていきます。 そのA列の同じコード番号全てに対して、B列の値を合計してC列に合計値を入力したいのです。 C列の合計値入力箇所は、A列の1~3行目までだとするとC列1行目に合計値がくるようにしたいのです。 ちなみに行数は10万桁ほどあります。

  • エクセルでコレ出来ますか

    合計数字(金額)を表の「下のほう」に表示するのは一般的ですが、 合計を、表の一番上に表示させたいのです。 随時、項目が増えて行くので、下にどんどん増えるのです。 運用の際に、まず最初に「合計」を見たいので、表の一番上に表示させられるととても便利なのです。 どなたか方法を御存じでしょうか?

  • excel マクロで行番号の取得方法

    マクロ初心者です どうしてもできません お願いします! 集計合計値が記入されている行を(例えば、(c5:g5))をコピーをしてday関数を使って得たセルの値を取得してその値を行番号にして、例(k□)として貼り付けし、一日づつ(日付どうり)下にずらして貼り付けしていきたいのですがどうしてもできません また この式を利用して 日にちを集計表のファイル名として保存したいと思っています ご教授宜しくお願いします

  • エクセルの関数で2つの条件に合うものを探す。

    エクセルの関数で下記のことをしたいのです。 表(1) T>=0.6  0.6>T>=0.3  0.3>T>=0.15 U<2   A     B       C 2<=U<3  B     B-C     D 3<=U<4  C      C      D 4<=U<6  D     C-D     D 6<=U    E      D      D 別の表(2)に U   T         1.5  0.3         0.9  0.8             5.9  0.13         ・   ・         ・   ・ とあります。 そのためUの値とTの値で表(1)のAからE値を抽出し別の表にAからEを表示したいのです。エクセルの関数(IF,AND,LOOKUP等)を試してみたのですがうまくいきません。できるだけエクセルの関数のみで、よい方法があれば教えてください。よろしくおねがいします。     

  • SEM-EDSで塗膜分析

    塗装品に塗装浮きが発生しました。何かが塗装に付着したことが原因であり、塗装上に何かしら成分が残っていれば、SEMで確認できるかと考えています。ただ有機溶剤等の付着が原因であるとすれば、塗膜には残っている可能性は低い かつ 塗膜事体もC,Oで構成されていることを考えると、SEMでの観察は難しいかと考えていますが如何でしょう? ちなみにですが、塗膜の上にメッキをすれば、SEMで分析できるかと考えています。ですが原理はよくわかっておらず、メッキをすればSEM分析できる理由を教えてください。そのあたり、よくわかっていません。。

  • エクセルでなのですが、

    エクセルでなのですが、 ある表にて A列 : 店コードが適当に並んでいます。 B列 : 部門コードが適当に並んでいます。 C列 : 商品名が入っております。 D列 : 金額が入っております。 この状態で同じシートの離れた場所に以下の条件式を入れたいと思います。 A列にKと入っており、かつB列に3が入力されている商品の C列に記載されている金額の合計を算出しなさいという場合、どのような関数が適当でしょうか。 この式を入れた後に行挿入や、表部分のソートをすることも今後致しますので、そのせいで おかしな数が出ないようにしたいです。 ご教授、よろしくお願いいたします。

  • Excelの関数について

    Excelの関数について 私のExcelは2003です。 表を作っていて A列とB列に数値を入れてその合計をC列に自動的に出すようにするのは C列に「=SUM(A3,B3)」と入れますよね? 1日数回のデータを取り A列とB列に数値を入力し 1ヶ月ほどデータを取り続けるので その分C列に入れた関数を下へセルの右下にポインタを合わせて十字の記号を出して 下へ関数を入れたのですが その場合C列には0と表示されますよね? これは防げないものなのですか? 後、そのC列に表示された合計値を 次の行のA列に表示させたいのですが そういう関数はありますか? C列の合計値に次の数を足して、合計値をどんどん増やしていくので 例えばC1の値をそのままA2に表示。 C2の値をそのままA3に表示 C5の値をそのままA6に表示としたいのですが 関数があったら教えてほしいです。

  • エクセルのマクロで

    エクセルのマクロでこんな処理はできるでしょうか? 元データ表に A列からC列まである数値が5000行にわたって入っています。 例     A B C 1行目 1 4 6 2行目 4 7 8 3行目 5 6 4 4行目 7 8 2 ・ ・ 今、1行目と2行目の間に新たな行を挿入し、 C1セルの値を新たに挿入した行のA列からC列に貼り付けたい。 同様に現時点での2行目と3行目の間に新たな行を挿入し 今度はC2セルの値をその行に貼り付けます。 上の例で言うとこうなります。これを最後の行まで繰り返します。     A B C 1行目 1 4 6 2行目 6 6 6 3行目 4 7 8 4行目 8 8 8 5行目 5 6 4 6行目 4 4 4 7行目 7 8 2 8行目 2 2 2 ・ ・ 元データは5000行あるので、都合1万行になるということです。 このような処理はできるでしょうか? お教えいただけたら幸いです。よろしくお願いします。

  • エクセルマクロ-条件付き繰り返し

    マクロ初心者です。(エクセル2003使用) シート1にある表で、M列が空白以外(処理済みなどの値がある場合)である場合、その行全体をコピーし、シート2の最終行に貼り付けして、シート1からはその行を削除するマクロを作成したいと思っていますができません。 すみませんが、どなたかご教授願います。 (シート1の表) ・8行目が題目となっており、A9から表となっています。 ・表の全体サイズは、横がAからMまでで、縦はC(シー)の管理番号行分までとなっています。(Mは、空欄があったり値(処理済みなどの値)が入っていたりしています) (考えているマクロ) ・Loopの回数は、Cの管理番号が終わるまで ・IFでCに値があり、Mが空欄だった場合は、そのまま(何もしない) ・Cに値があり、Mに値があった場合は、その行全体を選択しコピーし、シート3の最終行に貼り付け、シート1のその行は削除する Sub 処理済み() Range("C9").Select Do While ActiveCell.Value = "" ActiveCell.Offset(1).Select Loop If ActiveCell.Offset(, 10).Value = "" Then そのまま Else If ActiveCell.Offset(, 10).Value = "値があったら" Then その行全体を Select.Copy Sheets("Sheet2").Select Dim 下 下 = Range("A").End(xlDown).Row ペースト 削除 End If End Sub すみませんが、どなたか教えていただけましたら助かります。 よろしくお願いいたします。