Excel2000のマクロでデータを指定の順序で入れ替え、項目名を書き換え、掛け算と合計を計算する方法

このQ&Aのポイント
  • エクセル2000のマクロを使用して、データの入れ替えと書き換え、掛け算と合計の計算を行う方法を教えてください。
  • データにはA~AEまでの項目があり、入れ替える順序はC、A、T、U、W、V、AA、Z、Nです。
  • Zの項目を「仕入単価」、AAの項目を「数量」と書き換え、AAとZの掛け算結果を新しい列に表示し、合計金額を計算します。
回答を見る
  • ベストアンサー

エクセル2000のマクロでこんな事出来ますか?

以前にも同じような質問を致しましたが少し変更があった為再度 質問させて頂きます。 日々あるデータが送られてきます。 A~AEまであります。項目は1行目でセルが黄色で塗り潰されています。 マクロで下記のようにしたいのです。 残すのはA、C、N、T、U、V、W、Z、AAのみですが順序を入替えたい。 順番としてC、A、T、U、W、V、AA、Z、Nの順です。 元々は違う名前で入ってるのですがZの項目を「仕入単価」と書き換えたい。 AAの項目を「数量」と書き換えたい。 AAとZの掛け算を出したい。出す場所はZとNの間の列に新たに列を作りそこに出す。 その列の項目には「合計金額」と入れ他の項目と同じように黄色で塗り潰す。 さらにZの単価は基本的に330.00のように小数点以下二桁が入っています。 たまに100.50のように単価に銭が入る事があります。 その場合の計算として例えば仕入単価100.50で数量が5とすれば答えは502となり 銭も計算した上で合計のところで小数点以下は切り捨てにされます。 表示も502.00のようにするのではなく502と小数点を表示させたくありません。 以上、細かい指示ばかりで申し訳ありませんが教えて頂けると有り難いです。 もし補足が必要なら申し付け下さい。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.7

> 教えて頂いたマクロを見ながらいろいろと試したのですがどうも上手くいきません。 > その辺り分り易く教えて頂けると嬉しいです。 ご自分で列の順序の入れ替えをマクロの記録でやってみてどのような記述になるのか見てみましたか? とりあえず回答は書きましたが、自分でなおせないと応用がきかなくて困ると思いますよ。 Sub TEST04() Dim x As Long With ActiveSheet .Columns("C").Cut .Columns("A").Insert Shift:=xlToRight .Columns("T:U").Cut .Columns("C:D").Insert Shift:=xlToRight .Columns("W").Cut .Columns("E").Insert Shift:=xlToRight .Columns("W").Cut .Columns("F").Insert Shift:=xlToRight .Columns("AA").Cut .Columns("G").Insert Shift:=xlToRight .Columns("AA").Cut .Columns("H").Insert Shift:=xlToRight .Columns("O:P").Cut .Columns("I:J").Insert Shift:=xlToRight .Columns("K:AE").Delete Shift:=xlToLeft 'J列不要の場合は("J:AE")にする .Columns("I").Insert Shift:=xlToRight .Range("G1") = "数量" .Range("H1") = "仕入単価" .Range("I1") = "合計金額" x = .Range("H" & .Rows.Count).End(xlUp).Row .Range("I2:I" & x).FormulaR1C1 = "=ROUNDDOWN(RC[-2]*RC[-1],0)" .Range("I" & x + 1).FormulaR1C1 = "=SUM(R[" & 1 - x & "]C:R[-1]C)" .Range("G2:G" & x).NumberFormatLocal = "0;[赤]-0" .Range("I2:I" & x + 1).NumberFormatLocal = "#,##0;[赤]-#,##0" .Range(.Range("A1"), .Range("A1").End(xlToRight)).Interior.ColorIndex = 6 End With End Sub

so2580
質問者

お礼

何度もお手数をお掛けし申し訳ありませんでした。 丁寧に教えて頂きました事、心から感謝申し上げます。 >ご自分で列の順序の入れ替えをマクロの記録でやってみてどのような >記述になるのか見てみましたか? >とりあえず回答は書きましたが、自分でなおせないと応用がきかなくて >困ると思いますよ。 おっしゃる通りです。 少しずつですが勉強していきたいと思います。 本当に有難うございました。

その他の回答 (6)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.6

おはようございます。merlionXXです。 > G列、I列の中で-(マイナス)の表示がされる事があります。 > その際にその数字を赤文字で表示させたいのですが、 セルの書式設定を変えればいいというのはわかりますよね? ご自分でマクロの記録で書式設定の変更をやってみて、それがどのような記述になるのか一度見てくださいね。 今回は下記のような修正になります。 GとI列はマイナス時は赤字、I列はさらにカンマが入るんでしたね。 Sub TEST03() Dim x As Long With ActiveSheet .Columns("C").Cut .Columns("A").Insert Shift:=xlToRight .Columns("T:U").Cut .Columns("C:D").Insert Shift:=xlToRight .Columns("W").Cut .Columns("E").Insert Shift:=xlToRight .Columns("W").Cut .Columns("F").Insert Shift:=xlToRight .Columns("AA").Cut .Columns("G").Insert Shift:=xlToRight .Columns("AA").Cut .Columns("H").Insert Shift:=xlToRight .Columns("T").Cut .Columns("I").Insert Shift:=xlToRight .Columns("J:AE").Delete Shift:=xlToLeft .Columns("I").Insert Shift:=xlToRight .Range("G1") = "数量" .Range("H1") = "仕入単価" .Range("I1") = "合計金額" x = .Range("H" & .Rows.Count).End(xlUp).Row .Range("I2:I" & x).FormulaR1C1 = "=ROUNDDOWN(RC[-2]*RC[-1],0)" .Range("I" & x + 1).FormulaR1C1 = "=SUM(R[" & 1 - x & "]C:R[-1]C)" .Range("G2:G" & x).NumberFormatLocal = "0;[赤]-0" .Range("I2:I" & x + 1).NumberFormatLocal = "#,##0;[赤]-#,##0" .Range("A1:J1").Interior.ColorIndex = 6 End With End Sub

so2580
質問者

お礼

有難うございます。 何度も感謝致します。 希望通りになりました。 さらに今後の可能性として下記のような場合も考えらるのですが、 (またか!とお叱りを受けるのを覚悟で質問させて下さい) 元データのN列が最後に来ますが、これがN列では無くI列が最後の場合、 又はI列、J列と二つの列が最後の場合はどうなるのでしょうか? N列は必要無しです。 その他はまったく同じ条件です。 教えて頂いたマクロを見ながらいろいろと試したのですがどうも上手くいきません。 その辺り分り易く教えて頂けると嬉しいです。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

> 一つ後で気が付いたんですがI列の合計を一番下のセルに表示させるには > どうすれば良いのでしょう? > それとI列のみカンマで区切りを入れたいのですが合わせて教えて下さい。 では、これでいかがでしょうか? どこが変わったか見比べてください。 Sub TEST02() Dim x As Long With ActiveSheet .Columns("C").Cut .Columns("A").Insert Shift:=xlToRight .Columns("T:U").Cut .Columns("C:D").Insert Shift:=xlToRight .Columns("W").Cut .Columns("E").Insert Shift:=xlToRight .Columns("W").Cut .Columns("F").Insert Shift:=xlToRight .Columns("AA").Cut .Columns("G").Insert Shift:=xlToRight .Columns("AA").Cut .Columns("H").Insert Shift:=xlToRight .Columns("T").Cut .Columns("I").Insert Shift:=xlToRight .Columns("J:AE").Delete Shift:=xlToLeft .Columns("I").Insert Shift:=xlToRight .Range("G1") = "数量" .Range("H1") = "仕入単価" .Range("I1") = "合計金額" x = .Range("H" & .Rows.Count).End(xlUp).Row .Range("I2:I" & x).FormulaR1C1 = "=ROUNDDOWN(RC[-2]*RC[-1],0)" .Range("I" & x + 1).FormulaR1C1 = "=SUM(R[" & 1 - x & "]C:R[-1]C)" .Range("I2:I" & x + 1).NumberFormatLocal = "#,##0" .Range("A1:J1").Interior.ColorIndex = 6 End With End Sub

so2580
質問者

お礼

merlionXXさん 何度も本当に有難うございます。 思い通りになりました。 欲を言いますが、あと一つだけ教えて下さい。 G列、I列の中で-(マイナス)の表示がされる事があります。 その際にその数字を赤文字で表示させたいのですが、その場合は どうすれば良いのでしょう?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 merlionXX さんから回答が出ていますから、私としては、今のところVBAを書くのは控えますが、 >表示も502.00のようにするのではなく502と小数点を表示させたくありません。 ここの部分ですが、おそらく、片方の単価の部分は、"0.00" で、もう片方の数量が、デフォルト状態で、金額欄は、もともとは、デフォルトの状態のままであったと思うのです。 そういう場合は、単価の書式に引きずられて、金額欄も、"0.00" になってしまうので、意図的に、セルの書式を、"0" または、"#,##0" などとしておいたら、そういう問題は発生しなくなると思います。数式は、merlionXX さんの ROUNDOWN でよいと思います。

so2580
質問者

お礼

お礼が遅くなり申し訳ありませんでした。 私の意図している事が出来ました。 有難うございます。 一つ後で気が付いたんですがI列の合計を一番下のセルに表示させるには どうすれば良いのでしょう? それとI列のみカンマで区切りを入れたいのですが合わせて教えて下さい。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

では、前回答えたものをちょといじって・・・ Sub TEST01() Dim x As Long With ActiveSheet .Columns("C").Cut .Columns("A").Insert Shift:=xlToRight .Columns("T:U").Cut .Columns("C:D").Insert Shift:=xlToRight .Columns("W").Cut .Columns("E").Insert Shift:=xlToRight .Columns("W").Cut .Columns("F").Insert Shift:=xlToRight .Columns("AA").Cut .Columns("G").Insert Shift:=xlToRight .Columns("AA").Cut .Columns("H").Insert Shift:=xlToRight .Columns("T").Cut .Columns("I").Insert Shift:=xlToRight .Columns("J:AE").Delete Shift:=xlToLeft .Columns("I").Insert Shift:=xlToRight .Range("G1") = "数量" .Range("H1") = "仕入単価" .Range("I1") = "合計金額" x = .Range("H" & .Rows.Count).End(xlUp).Row .Range("I2:I" & x).FormulaR1C1 = "=ROUNDDOWN(RC[-2]*RC[-1],0)" .Range("I2:I" & x).NumberFormatLocal = "G/標準" .Range("A1:J1").Interior.ColorIndex = 6 End With End Sub でいいでしょうか?

so2580
質問者

お礼

お礼が遅くなり申し訳ありませんでした。 私の意図している事が出来ました。 有難うございます。 一つ後で気が付いたんですがI列の合計を一番下のセルに表示させるには どうすれば良いのでしょう?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 前回、同様のご質問をなさって解決していますね。 http://oshiete1.goo.ne.jp/qa2937725.html その時に、再び質問するかもしれないとお書きになっていますので、了解はしていますが、今は、どういう状況なのですか? ここを直してほしいとか、前のものは、うまくなかったとか、最初からというものでもないと思いますが。

so2580
質問者

お礼

御回答有難うございます。 その節は有難うございました。 お陰で前回の分は上手くいきました。 ですが、 「その列の項目には「合計金額」と入れ他の項目と同じように黄色で塗り潰す。 さらにZの単価は基本的に330.00のように小数点以下二桁が入っています。 たまに100.50のように単価に銭が入る事があります。 その場合の計算として例えば仕入単価100.50で数量が5とすれば答えは502となり 銭も計算した上で合計のところで小数点以下は切り捨てにされます。 表示も502.00のようにするのではなく502と小数点を表示させたくありません。」 の部分を追加したいのです。 ただそれだけです。その為に前回の部分も含めて書き直す必要があるのであれば 再度御指示願えればと思います。 度々の事で申し訳ありませんが宜しくお願いします。

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.1

マクロの記録でできると思いますよ。 順番を入れ替えると考えるからややこしいですが 新しいシートに必要な項目を順に列でコピーしていけば単純ですから。 項目名の書き換えもできますし、数式入力は.end(xlup)を使って最終行を得ればいいでしょう。 単価については Sub test() For Each cl In Selection If cl.Value = Int(cl.Value) Then cl.NumberFormatLocal = "0" Else cl.NumberFormatLocal = "0.00" End If Next End Sub な感じでよろしいかと。

so2580
質問者

お礼

早々に有難うございました。 参考にさせて頂きます。

関連するQ&A

  • エクセル2000のマクロで教えて下さい。

    日々あるデータが送られてきます。 A~AEまであります。 マクロで下記のようにしたいのです。 残すのはA、C、N、T、U、V、W、Z、AAのみですが順序を入替えたい。 順番としてC、A、T、U、W、V、AA、Z、Nの順です。 どのようにすれば良いのか教えて下さい。 もし補足が必要なら申し付け下さい。

  • Excelで作った表で・・・

     よくある「単価×数量」の表を作りました。 答えに小数点以下になるものが含まれるため、その列に セル書式で小数点以下を四捨五入して整数になるように 設定しました。それぞれの答えはそれで良かったのですが、今度はさらにそれらの合計を求めようと「SUM」を 入力したら表示された整数の合計ではなく、 それぞれのセルある小数点以下の数次を合計して四捨五入してしまいます。  (例)単価×数量=1.2 表示は1    単価×数量=1.3 表示は1        計 3 になってしまう←「2」にしたい       どうしたらいいのでしょうか?教えてください。

  • Excel計算が合わない

    Excelで請求書を作成しましたが、合計金額が一円単位出会わないことがあります。 表は簡単に数量x単価=合計      数量x単価=合計           金額合計   金額の合計の答えが1001だとしても時々1000だと計算したりしてます。  考えられるのは小数点を使った計算があるからかもしれませんが???数量0.5x単価33円=17とか四捨五入があるときによく間違いがあるような気がします。 手直しする方法を教えてください。

  • (エクセルマクロ)複数の一連作業をマクロで行う処理について

    以下の一連の処理についてマクロのコードを一式で教えてください。 【エクセルの構成】 1.シート名 日付だけ都度変更する形式 (例:YYYYMM_教えてGoo) 2.表 列 AからAAまでデータあり 行 1行目はタイトル。2行目以降からデータ。 【処理手順】 1.表全体のフォントを「MS Pゴシック フォント9」にする。 2.1行目から11行目と13行目を削除 3.A列とD列削除 4.一行目の項目行にオートフィルタを設定 5.ウインドウ枠の固定(先頭行(一行目の項目行)の固定) 6.H列に文字が入ってる行のみ削除 7.E列とF列を昇順に並び替え(優先順位は(1)F列、(2)E列) 8.データの最終行の次の行のU列からZ列に表を入れる。 (例)5行目が最終データ行の場合  A…U V W X Y Z 1 ・ 5   6 A =SUM() 7 B 8 C     =SUM() (書式設定と詳細) セルU6 「文字列A」と入力し、背景は黄色、文字色は赤 セルV6 背景は黄色、文字色は赤 セルW6 背景は黄色、文字色は赤 セルX6 背景は黄色、文字色は赤 セルY6 背景は黄色、文字色は赤 セルZ6 数式入力(=SUM(Z$2:Z5(最終行))、背景は黄色、文字色は赤 セルU7 「文字列B」と入力し、背景は黄色、文字色は赤 セルV7 背景は黄色、文字色は赤 セルW7 背景は黄色、文字色は赤 セルX7 背景は黄色、文字色は赤 セルY7 背景は黄色、文字色は赤 セルZ7 背景は黄色、文字色は赤 セルU8 「文字列C」と入力し、背景は黄色、文字色は赤 セルV8 背景は黄色、文字色は赤 セルW8 背景は黄色、文字色は赤 セルX8 背景は黄色、文字色は赤 セルY8 背景は黄色、文字色は赤 セルZ8 数式入力(=SUM(Z6:Z7)、背景は黄色、文字色は赤 すべて掛け線なし 9.データ最終行(表も含む)から5行目全体をグレーにし、その行のA列に「データA」と入力。 10.I列に文字が入ってる行のみを切り取り、一番最後にデータが入ってる行から6行目(「データA」と入力した下の行から) から貼り付ける。(切り取った行は行削除し、上詰め) 11.データ最終行(切取貼り付けしたデータAを含む)から3行目全体を黄色にし、その行のA列に「データB」と入力。 12.X列の前に列を挿入し、挿入した列の一行目(項目行)に「タイトル」と記入。 13.挿入した列の2行目から前の列(W列)にデータが入ってる行まで数式(=ROUND(W2/1.05,0)※2行目に入力した場合)をコピー。 14.セルAB1に「No.」と記入。 15.G列からW列とY列からAA列を非表示にする。 6と8以降からマクロの自動記録ではできませんでした。 ご教授お願いします。

  • アクセスで見積書作成

    アクセスで見積書を作成していますが、レポートで経費の計算が上手くいきません。 作成したい見積のレイアウトは以下の通りです。   (1)○○費      (1)○○○   単価 × 数量 = 金額      (2)○○○   単価 × 数量 = 金額      (3)○○○   単価 × 数量 = 金額   (2)××費      (4)×××   単価 × 数量 = 金額      (5)×××   単価 × 数量 = 金額      (6)×××   単価 × 数量 = 金額    以下同じように(5)まであります。   (6) 経費A     (1)~(3)の合計 × 1%   (7) 経費B     (4)~(5)の合計 × 2%   (8) 経費C     (1)~(5)の合計 × 3%   (9) 端数処理    (1)~(8)の合計の千円以下の部分   (10) 合計     (1)~(8)の合計-(9) テーブルは次の4つを作成しました。    ・大項目Tとして(1)~(5)の値    ・小項目Tとして(1)~(15)の値、大項目名(リレーション)    ・見積Tとして見積No、相手先名等    ・見積明細Tとして見積No(リレーション)、小項目(リレーション)、数量等 レポートで経費の計算がどうしても上手くいきません。クエリーも色々作成してみましたが、レポートでどう参照すればいいのかわかりません。完全に行き詰まっています。 どなたかお知恵を貸してください!レポートでのグループヘッダ・フッタの設定の仕方なども教えていただけると大変ありがたいです。

  • Excel VBA 「小計」と入力したら自動計算

    エクセルの小計の計算について質問いたします。    A列    B列      C列   D列     E列    F列 1 施設名  2      商品名,内容   1    単位     単価    金額(数量×単価) 3      商品名,内容   1    単位     単価    金額(数量×単価) 4                              小計     ●●●● ――――――――――――――――――――――――――――――――― 5 施設名 6      商品名,内容   1    単位     単価    金額(数量×単価) 7      商品名,内容   1    単位     単価    金額(数量×単価) 8      商品名,内容   1    単位     単価    金額(数量×単価) 9                              小計     ●●●● ―――――――――――――――――――――――――――――――――                                合計     ●●●● 施設名ごとに項目が複数あり、施設ごとに項目の数も違います。 これを施設ごとに●の所に小計を出したいです。 「小計」が数回にわたり出てくる場合は、「前回小計をした次のセルから今回小計するセルの前まで」を計算させる訳ですが、どんなVBAを組めばいいのかわかりません。 理想としてはにE列に小計という文字を入れるとF列に自動で計が出るようにして、さらに小計の合計を最後の行のセルにだしたいです。。 さらに、見やすくなるように小計の下のセルにA~Fの間に太線を引いて施設ごとの区切りがわかるようにしたいです。。 繰り返し作業ばかりで大変です。 どなたか知恵をお貸しください。

  • Excelマクロの組み方を教えてください。

    マクロ初心者です。 見積のフォーマットを作成しているのですが、 どなたかマクロの組み方をご教授いただければありがたいです。 見積のフォーマットは下記のようになっております。 A   B   C   D  E   F 番号 製品名 数量 単価 合計 製品カテゴリ 製品カテゴリは、例えば食料品、衣料品といったものを選択してもらうように、 入力規則でリストから選んでもらうようになっています。 製品カテゴリごとでいくらの合計金額になるのかを集計したいので、 C列に数量が入っている場合は必ず製品カテゴリを選択して欲しいのです。 印刷マクロはもう既に組んであり、そのマクロボタンを押したときに、 C列に数量が入っていて、同じ行の製品カテゴリの欄が未入力の場合に、 そのマクロが実行されない(エラーメッセージが出る)マクロを組みたいと考えております。 ※ちゃんと製品カテゴリが入っていれば、そのままメッセージなども出ずに印刷されるようにしたいです。 お忙しいところすみませんが、どなたかお力をお貸しいただければと思います。 宜しくお願い致します。

  • エクセルでセル一つ置きの数量合計

    エクセルで例えば、    A    B  1 数量   1111 2 単価    111 3 数量   2222 4 単価    222 5 数量   3333 6 単価    333 ・ ・    ・ ・ ・    ・ 100 数量合計 xxxx として、B100に数量の合計だけを 表示させる関数を教えて下さい。

  • エクセルで、1つ置きの条件によって1つ置きの金額を合計したい

    M列からAB列まで入力エリアがあります。 M列には ・日付(1/1から12/31のうち1日。表示はmm/dd) ・「経費」という文字 ・「消費税」という文字 上記のうちいずれかが、 N列には金額が 入力されており 以下、AA列、AB列まで入力可能となっています。 (よって、8組入力できます) AH列には、 M(、O、Q、S、U、W、Y、AA)列に 日付が入力されている隣の金額の合計 -(ひく) 「消費税」と入力されている隣の金額の合計 を算出したいのですが、どのような関数を使っていいのか分かりません。 また、AI列には M(、O、Q、S、U、W、Y、AA)列に 日付が入力されている隣の金額の合計 +(たす) 「経費」と入力されている隣の金額の合計 も算出したいのです。 お願いいたします。

  • excel2003の月次項目合計の計算式

    excel2003です。 現在A1~W100 までの表があります。100行は各項目の合計が入ります。B列は日付(803は8月3日)で飛び飛びの昇順です。 今後新しい日付が100行目の直前に追加されることはもちろん、過去行も追加されたり削除されたりします。 ここで新しく各月ごとの項目ごとの合計を103行以下に新設したいのです。 例えばD104セルのbb2は2月次の項目2の合計を示します。A列、B列は手入力します。 月次項目の合計はどのような計算式にすればよいか教えてください。 マクロを使えば見通しよくできるはずですが、ここでは計算式でやります。 (表がわかりづらいところはお許しください。---は表示桁の調整です) A ---- B --- C -- D -------  W 名前 日付 項目1 項目2 ----  項目n 2 --- 101 100 200 ---- 300 3 --- 102 100 201 ---- 101 -- 10 --- 131 -- ---------------------- 11 --- 202 ------------------------- -- 50 --- 830 ------------------------ 51 --- 903 ------------------------- -- -- 100 -------- 計1 -- 計2 -----   計n 101 102****以下が新設したい表です 103 1  aa1 aa2 ---- aan 104 2  bb1 bb2 ---- bbn -- -- 110 8  hh1 hh2 ---- hhn

専門家に質問してみよう