• 締切済み

エクセルマクロ(VBA)の立て方について

お世話になっております。 エクセルのVBAマクロについて教えてください。 以下のように2種類A,Bの縦に並んだ時系列データがあった場合、 A No1  2012/6/1    1 A No2  2012/7/1    3 A No3 2012/8/1    4 B No1  2012/6/15   2 B No2 2012/7/15   6 B No3  2012/8/15   7 B No4  2012/9/15   9 上記のデータを別のシートに以下のように表示させたいのです。 (上記1列目は以下1列目に対応、上記4列目の数字をA、B単位で累計和を以下2列目に表示) A 1 A 4 A 8 B 2 B 8 B 15 B 24 以上のVBAマクロの数式の立て方を教えていただけますでしょうか。 よろしくお願いいたします。

みんなの回答

  • luka3
  • ベストアンサー率74% (299/401)
回答No.3

VBAとしては答えが出ていますが、この程度であればVBAを使わなくともいいと思います。 Sheet2に以下をセットします。 A1 「=Sheet1!A1」 B1 「=Sheet1!D1」 A2 「=Sheet1!A2」 B2 「=IF(A2=A1,B1,0)+Sheet1!D2」 3行目以降は2行目をコピー&ペースト(もしくはフィル)してください。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

シート1からシート2へって事なら Sub try()  Worksheets("Sheet1").Range("A:A").Copy _  Worksheets("Sheet2").Range("A1")  With Worksheets("Sheet2")       With .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Offset(, 1)            .Formula = "=SUMIF(Sheet1!$A$1:D1,Sheet2!A1,Sheet1!D:D)"            .Value = .Value       End With   End With End Sub こんな感じとか?

回答No.1

いろいろありますが・・・簡単なところで、 Sub myCalc() Dim SumA As Long Dim SumB As Long Dim i As Long Dim myLastRow As Long myLastRow = 7 For i = 1 To myLastRow If Range("A" & i).Value = "A" Then SumA = SumA + Range("E" & i).Value Range("B" & i).Value = SumA ElseIf Range("A" & i).Value = "B" Then SumB = SumB + Range("E" & i).Value Range("B" & i).Value = SumB End If Next i End Sub A列 判断値(A Or B) B列 計算結果 E列 元値 とした場合

関連するQ&A

  • EXCEL VBAを使ってマクロを組んだのですが、消えてしまいます。

    VBAを使ってマクロをEXCELに組んだのですが、貼り付け先のデータをダブルクリックするとデータが消えてしまいます。 組んでいるマクロは (前提) ファイルA・・コピー元データ ファイルB・・貼り付け先データ (内容) Aファイルでマクロを実行すると、Aファイルの内容がBファイルにコピーされるというものです。 Aファイルの元データは数式のため、Aファイル内でいったん値として貼り付けてから再度コピーして、Bファイルに貼りつけています。 Aファイルは自分で作成したものですが、Bファイルは他社作成のため、もろもろ変更ができません。 Aファイルにもロックが必要のため、保護をかけています。(ロック、表示ともに) マクロ実行後、Bファイルの貼りつけされたデータをダブルクリックすると、ダブルクリックしたセル内容が消えてしまいます。 まったく原因がわからず困っています。すみませんがどなたかわかるかたお願いいたします。

  • VBA マクロについて教えて下さい!

    VBA初心者です。 以下の様なマクロを組みたいのですが、マニュアル片手に四苦八苦しております。 どなたかお力をお貸し下さいm(__)m ・A列 区分(A OR B) ・B列 番号(○○○○-○○○○) ・C列 番号前(‐より前を表示したい) ・D列 番号後(‐より後を表示したい) A列・B列にはデータが入ります。 B列の番号を‐(ハイフン)で区切って、C列・D列にそれぞれ転記したいのです。※区分が”A”の場合のみ。 区分が”B”の場合はC・Dは空欄のままで。 Excelの[データ]-[区切り位置]を使って操作を記録してみましたが、”B”の場合は空白にするという条件文を巧く組み合わせる事が出来ません... 他にも色々方法はあると思うのですが、なかなか辿り着く事が出来ません。 どなたかアドバイスをお願い致しますm(__)m

  • エクセルVBAでの並び替えについて

    エクセルでデータの並び替えの方法が分からなくて質問します。たとえばBの列の100~999、A100~A999、B100~B999のようなデータが縦に入っているものとします。この中には150-1、150-2のようなデータも混ざってます。これをそのままエクセルで並び替えをしても100~999までは上手にできるのですがその後に150-1とかきてA100~が始まります。例えばこのデータを100~始まり149、150-1,150-2、152,153、154のように上桁から基準に並び替えを行いたいのですがいい方法はありませんか?現在はマクロを使ってVBAでSORTの引数を触ったりしたのですが上手にいきません。基本的にVBAで行っているのでVBAでお願いします。初心者なのでよろしくお願いします。

  • EXCEL マクロ・VBA 自動で連番を振る

    EXCELのマクロ・VBAについて質問です。 例えば、B列にデータを入力すると、入力した行まで自動的にA列に連番が入力されるようにしたいのですが、どういった方法があるでしょうか。 マクロやVBAについてはこれから勉強をしようと思っている素人ですので、コードとその解説をいただけると助かります。

  • エクセルVBAマクロ検索について

    エクセルで検索してフラグを立てるマクロを教えてください。 A列  B列   C列   D ・・・・・ NO.  日付1  日付2  というリストがあり、A列からNOを検索してB列に日付のフラグを立てる作業をしたいのですが、 まず日付を入力するボックスで設定させてから、A列のIDを検索し、 該当IDのB列にその日付をフラグ入力させるというものです。 このときフラグ入力された該当IDのある列が表示されるようにします。 もしも既に日付フラグが立っているものがあれば、「重複です」等のメッセージボックスが出るか、 またはC列に新たな日付フラグが立つようにしたいです。 それと、上記マクロでA列を参照してB列にフラグという内容を違う列に変える場合(同類の違うリストでもこのマクロを活用したいため)、参照列とフラグ列はマクロでどこを直せばいいのか教えていただけると助かります。 いろいろ自力で調べては見たのですが、知識不足でお力を貸していただけると幸いです。 よろしくお願いいたします。 

  • EXCEL VBA マクロ 印刷

    ・Aさん、Bさん、Cさん、~ Xさんと26人がいます。 ・A列には、それぞれ上記の担当者名が入ってます。 ・B列以降には、担当の商品名・数量などが入っているとします。 ・必ずしも、全員のデータが入っているとは限りません。(その日により、違います。) →上記のうち、A列がCさんのデータ(行)だけを抜き出し、印刷することは可能でしょうか?該当がなければ、マクロを終了させたいのですが・・ よろしくお願いいたします。

  • ExcelのVBAについて

    ExcelのVBAについて VBA全くの初心者です。 以下のような処理を行いたいのですが、どなたかご教授をお願いします。 以下のように支店(1)~(3)のシートがあります。 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、   一致しない行を不一致データシートに出力する もう一つ別のマクロで、 1.入力シートに調べたい商品No・商品名・備考を入力する(複数行あり) 2.マクロを実行すると、商品Noを検索対象として支店(1)~(3)シートをチェックし、、   一致する行を一致データシートに出力し、D列に対象データがあるシート名を表示する   ※可能でしたら、E列に対象データがある行番号も表示する -------------------------------- シート名:支店(1) A      B     C 商品No   商品名   備考 011    商品A   備考A 009    商品B   備考B 015    商品C   備考C -------------------------------- シート名:支店(2) A      B     C 商品No   商品名   備考 008    商品A   備考A 023    商品B   備考B 004    商品C   備考C -------------------------------- シート名:支店(3) A      B     C 商品No   商品名   備考 007    商品A   備考A 033    商品B   備考B 018    商品C   備考C -------------------------------- シート名:入力シート A      B     C 商品No   商品名   備考 ※ここに複数行入力する -------------------------------- シート名:不一致データシート A      B     C 商品No   商品名   備考 ※ここに出力される -------------------------------- シート名:一致データシート A      B     C 商品No   商品名   備考 ※ここに出力される

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

    エクセルのVBAマクロについて、添付のような物を考えているのですが、宜しくお願いします。 B3~E15に関数を入れて、TRUE となったデーターを表示 させるまでは出来たのですが、このデーターをF~I列へ上から順に (空白行は詰めて)順次記録して行きたいのです。 B3~E15に表示させるデーターは、別シートから抽出し、 切り替えますので、結果を表示させたら、ボタンを押して記録し、 再度別データーを入れたらその下に記録して行くような仕組み を考えております。 宜しくお願いします。

  • エクセルのマクロ(VBA)の事で質問です。

    エクセルのマクロ(VBA)の事で質問です。 A列のA1からA100ぐらいまで、各セルに以下のような文章があるとします。 -------------------------------------------- A1 今日は、天気です。 明日も良い天気になるといいですね。 -------------------------------------------- A2 今日は野菜が安いです。 昨日よりも安くて主婦には助かります。 味も美味しいです。 -------------------------------------------- ・ ・ ・ このような感じでセルの中に色々と文章が入っています。 これをマクロ(VBA)を使いB列には以下のようにしたいです。 -------------------------------------------- B1 今日は、天気です。<br /> <br /> 明日も良い天気になるといいですね。 -------------------------------------------- B2 今日は野菜が安いです。<br /> <br /> 昨日よりも安くて主婦には助かります。<br /> <br /> 味も美味しいです。 -------------------------------------------- ・ ・ ・ 要するに、改行のところに<br />タグを入れたいのです。 今までは、テキストエディタにコピペして、置換していたのですが、 マクロ(VBA)では、どのようにすればいいのでしょうか? 教えて頂けないでしょうか? よろしくお願いします。

  • 教えて下さい。VBAマクロで困ってます。

    VBAマクロ初心者です。実は、次のようなコードをどのように書けばよいのか教えて下さい。 例えば、 Aは、デスクトップ上のエクセルファイルの"Sheet1"のA1:B4のA列は数値、B列は文字列。 Aをデスクトップ上の別のフォルダーにあるエクセルファイルの"Sheet1"のA1:B4にデータをコピーをするのですが・・・。まったくわかりません。または、説明が下手でやりたい事が伝わらないかもしれませんが、よろしくお願いいたします。

専門家に質問してみよう