• ベストアンサー

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

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

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

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

#3です。 #3で書いた拙いコードに追加のご要望を加えるとこんな感じでしょうか。 Sub TEST001() 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:I").Insert Shift:=xlToRight .Range("G1") = "仕入数" .Range("H1") = "仕入単価" .Range("I1") = "合計金額" .Range("K1") = "備考" x = .Range("H" & .Rows.Count).End(xlUp).Row .Range("I2:I" & x).FormulaR1C1 = "=RC[-2]*RC[-1]" End With End Sub #5のWendy02さんのコード、勉強になります。 VBAだと横のソートが出来るんですね!

so2580
質問者

お礼

御礼が大変遅くなりました事をお詫び致します。 その後なんとか上手くいくようになりました。 素人の私にも比較的分り易い内容でお陰で助かりました。 しかしその後若干の仕様の変更があった為、再度御教授願う事になるかもしれません。 その時はまた宜しくお願い致します。

その他の回答 (7)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.8

こんにちは。 回答ではありませんが、Wendy02さんが触れてないのでMerlionXXさんに一言。 それにもしかして質問者もご存知ないかもしれないので。。。 >VBAだと横のソートが出来るんですね! VBAでなくてもできますが。。。(^^;;;   それからご自分の回答を拙いコードだと仰ってますが 質問者のレベルをちゃんと考慮している点に置いて優れた回答だと思いますよ。  

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

こんにちは。 下から数えて、5行目の  .Rows("1").Delete   の後、4行目のEnd With との間に、以下の項目を付けたしします。  .Rows("1").Delete -----ここから始まり------------------------------  With .Range("A1")       .Offset(, 6).Value = "仕入数"       .Offset(, 7).Value = "仕入単位"       .Offset(, 8).EntireColumn.Insert       .Offset(, 8).Value = "合計金額"       .Range(.Offset(1, 8), .Offset(1, 7).End(xlDown).Offset(, 1)).FormulaLocal = "=RC[-2]*RC[-1]"       .Offset(, 10).Value = "備考"  End With -----ここで終わり--------------------------------- End With Application.ScreenUpdating = True   Set r = Nothing

so2580
質問者

お礼

御礼が大変遅くなりました事をお詫び致します。 その後なんとか上手くいくようになりました。 しかしその後若干の仕様の変更があった為、再度御教授願う事になるかもしれません。 その時はまた宜しくお願い致します。

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

こんにちは。 #1さんの言うような内容ですが、実際に私が書いてみました。 一旦、保存してから、行ってください。ダメな場合は、保存をしなければよいのですから。 '---------------------------------------------------- Sub TestSample()   Dim ar As Variant   Dim i As Integer   Dim v As Variant   Dim r As Range      Application.ScreenUpdating = False   With ActiveSheet     .Rows("1").Insert     ar = Split("C,A,T,U,W,V,AA,Z,N", ",")          .Range("A1:AA1").Value = 99     i = 1     For Each v In ar       .Range(v & "1").Value = i       i = i + 1     Next v     .Range("A1:AA65536").Sort _     Key1:=.Range("A1"), _     Order1:=xlAscending, _     Header:=xlGuess, _     OrderCustom:=1, _     MatchCase:=False, _     Orientation:=xlLeftToRight     Set r = .Range("A1:AA1").Find(99, , xlValues, 1)     .Range(r, .Range("IV1").End(xlLeftToRight)).EntireColumn.Delete     .Rows("1").Delete   End With   Application.ScreenUpdating = True   Set r = Nothing End Sub

so2580
質問者

お礼

早々に御回答頂きました事に感謝致します。 お礼が遅くなったしまいました事をお詫び致します。 その後、確認致しましたところ下記の部分の追加が必要となりました。 再度お手数ですが御教授願えれば幸いです。 順番に並び替えますと元データのAA、Zが7番目8番目にきます。 でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。 それをそれぞれ「仕入数」「仕入単価」に変えたいのです。 さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と 「販売単価」の掛け合わせた数値を入れたいのです。 で、10番目に元データのNをそのまま反映させて、さらに11番目に 項目名「備考」という列を新たに作成したいのです。 「備考」の列は項目以外の行は空白です。 以上になりますが補足が必要な際は申しつけ下さい。

回答No.4

こんにちは。 方法はいくつかあると思いますが、一案。 新しくシートを追加してそこにコピー抽出していく方法です。     ●元シート名は、Sheet1 としています。 '---------------------------------------------------- Sub Test()  Dim myClms  Dim C As Integer  myClms = Array("C", "A", "T", "U", "W", "V", "AA", "Z", "N")  Sheets.Add after:=Sheets(Sheets.Count)  For C = LBound(myClms) To UBound(myClms)    Sheets("Sheet1").Columns(myClms(C)).Copy Columns(C + 1)  Next C End Sub '------------------------------------------------------------ それからこういった類の処理には上記のように配列を利用することをお勧めします。 配列に「並べたい順番に」抽出したい列番号を入れておくと、 順番を変えたい時とか、抽出したい列の増減にも柔軟に対応が出来ますから。  

so2580
質問者

お礼

早々に御回答頂きました事に感謝致します。 お礼が遅くなったしまいました事をお詫び致します。 その後、確認致しましたところ下記の部分の追加が必要となりました。 再度お手数ですが御教授願えれば幸いです。 順番に並び替えますと元データのAA、Zが7番目8番目にきます。 でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。 それをそれぞれ「仕入数」「仕入単価」に変えたいのです。 さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と 「販売単価」の掛け合わせた数値を入れたいのです。 で、10番目に元データのNをそのまま反映させて、さらに11番目に 項目名「備考」という列を新たに作成したいのです。 「備考」の列は項目以外の行は空白です。 以上になりますが補足が必要な際は申しつけ下さい。

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

#2です。 AE列まであったのですね。修正します。 Sub TEST01() 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 End With End Sub

so2580
質問者

お礼

早々に御回答頂きました事に感謝致します。 お礼が遅くなったしまいました事をお詫び致します。 その後、確認致しましたところ下記の部分の追加が必要となりました。 再度お手数ですが御教授願えれば幸いです。 順番に並び替えますと元データのAA、Zが7番目8番目にきます。 でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。 それをそれぞれ「仕入数」「仕入単価」に変えたいのです。 さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と 「販売単価」の掛け合わせた数値を入れたいのです。 で、10番目に元データのNをそのまま反映させて、さらに11番目に 項目名「備考」という列を新たに作成したいのです。 「備考」の列は項目以外の行は空白です。 以上になりますが補足が必要な際は申しつけ下さい。

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

こんな感じですか? Sub TEST01() 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:AA").Delete Shift:=xlToLeft End With End Sub

so2580
質問者

お礼

早々に御回答頂きました事に感謝致します。 お礼が遅くなったしまいました事をお詫び致します。 その後、確認致しましたところ下記の部分の追加が必要となりました。 再度お手数ですが御教授願えれば幸いです。 順番に並び替えますと元データのAA、Zが7番目8番目にきます。 でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。 それをそれぞれ「仕入数」「仕入単価」に変えたいのです。 さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と 「販売単価」の掛け合わせた数値を入れたいのです。 で、10番目に元データのNをそのまま反映させて、さらに11番目に 項目名「備考」という列を新たに作成したいのです。 「備考」の列は項目以外の行は空白です。 以上になりますが補足が必要な際は申しつけ下さい。

noname#252806
noname#252806
回答No.1

要望の内容であれば、 「マクロの記録」を使って ・不要列の削除 ・列の切り取って挿入し並びを入れ替え で十分と思いますが。

so2580
質問者

お礼

早々に御回答頂きました事に感謝致します。 お礼が遅くなったしまいました事をお詫び致します。 その後、確認致しましたところ下記の部分の追加が必要となりました。 再度お手数ですが御教授願えれば幸いです。 順番に並び替えますと元データのAA、Zが7番目8番目にきます。 でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。 それをそれぞれ「仕入数」「仕入単価」に変えたいのです。 さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と 「販売単価」の掛け合わせた数値を入れたいのです。 で、10番目に元データのNをそのまま反映させて、さらに11番目に 項目名「備考」という列を新たに作成したいのです。 「備考」の列は項目以外の行は空白です。 以上になりますが補足が必要な際は申しつけ下さい。

関連するQ&A

  • エクセル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と小数点を表示させたくありません。 以上、細かい指示ばかりで申し訳ありませんが教えて頂けると有り難いです。 もし補足が必要なら申し付け下さい。

  • Excelマクロ 表の書き換え方法教えてください

    2日くらいあれこれやってみたのですが、全くできないためお教えいただけますでしょうか。 1 2 3 4 5 6 7 A a b c d e f g B h i j k l m n C o p q r s t D u v w x y z (以下続く) 注)A1セルは空白、1、a、h、o、uは同じ列になります という表(Book1.xls)を下記(Book2.xls)へ変更するマクロを作りたいと思っています。 A 1 a A 2 b A 3 c A 4 d A 5 e A 6 f A 7 g B 1 a B 2 b (以下略) Book1の行数は任意、1~7は固定、abcde…は空白セルもあります。 いいマクロがありましたらぜひご教授ください。 よろしくお願い致します。

  • 順列・数え上げ

    よろしくお願いします。 ここに下のような390個の文字があります。 (A,B,C,D,E,F,G,H,I,J,K,L,M がそれぞれ10個ずつ、 N,O,P,Q,R,S,T,U,V,W,X,Y,Z がそれぞれ20個ずつあります。) この390個の文字から235文字を選んで一列に並べる方法は全部で何通りありますか。 A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z 以下、私が考えたことを書きます。 この390個の文字から235個の文字を選ぶ組み合わせの総数は、 (Σ[k=0~10]x^k)^13*(Σ[k=0~20]x^k)^13 を展開したときのx^235の係数ですから、 23463540513956137996043929988 通りだということは分かります。 この23463540513956137996043929988 通りのそれぞれについて235個の文字 の順列(同種のものを含む順列)を数え上げれば答えは出ると思いますが、これは あまりにも大変な作業です。 何かよい知恵はないでしょうか。

  • エクセルの関数やマクロで

    A列に以下のように入力したいのですが。 aa ab ac ad ae af 上記のようにアルファベット順で入力して、azまでいったら、今度はbaからbzでまで入力します。そのような感じでzzまで入力していきたいのですが。 この入力作業を、関数やマクロで行なうことは可能でしょうか? おわかりになる方がいましたら教えて下さい。

  • MS-excel 10列毎に改行したい

    MS-excel2003で、A1~W1までデータが横並びに入力されています。 これを10列毎に改行したいのですが、マクロでどのようにやればよいでしょうか? 図解すると、、 A1 B1 C1 D1 F1 G1 H1・・・・ のデータを A1 B1 C1 D1 F1 G1 H1 I1 J1 K1 L1 M1 N1 O1 P1 Q1 R1 S1 T1 U1 V1 W1・・・・・・ と したいのです。 これをマクロで行いたいのですが、ご教授願えませんか。

  • エクセルで連続した回数をカウントする方法は?

    筋トレなど、ある習慣を続けている回数を表示したいと思っています。 ○が行った日で、×が休んだ日です。この場合、AG4に3と表示するようにしたくて、 その後、7日が×で8日、9日と○が続いたら場合は、AG4には2と表示したいのです。    A     B   C   D   E   F   G    H I J K L M N O P Q R S T U V W X Y Z AA AB AC  AD  AE  AF   AG 3 筋トレ   1日 2日 3日 4日 5日 6日・・・                                   29日 30日 31日 連続回数 4         ○  ○ ×   ○  ○  ○ わかりにくいと思いますが、よろしくお願いします。

  • 列の値の結合 「エクセルマクロ」

    エクセルにて値の移動をマクロ化しようと奮闘しております。 もしかしたら、マクロにしなくて解決できるかもしれません、、、。 どうか有識者の皆様からお知恵をお借りしたいと思っております。 【現在の環境】 行数:700行 列数:5 【やりたい事】 列:A,B,C,D,Eに値が入っております。 B,C,D,Eの値をAの後に結合したいと思っております。 ■例 それぞれのセル(A~E)に A:s01 B:t02 C:u20 D:j53 E:z12 これをAのセルに、s01t02u20j53z12 という風に文字を結合したいと思っております。 何か解決策の糸口なるものをご教授頂ければ幸いです。

  • 行列の分割に関する問題の解答をお願いします。

    n次正方行列Aとn次列ベクトルvに対して、(n+1)次正方行列T(A,v)を T(A,v)=|A v|      |O 1| とおいて定めるとき、次の問いに答えよ。 (1)n次正方行列A,Bとn次列ベクトルu,vに対して、 T(A,u)T(B,v)=T(C,w) となるC,wをA,B,u,vを用いて表せ。 (2)Aが正則行列であるとき、T(A,v)も正則行列であることを示し、その逆行列T(A,v)^-1を分割した行列の形で求めよ。 よろしくお願いします。

  • エクセルのマクロで、次の場合にどの様に組めばいいのか。

    あるブックに  検索用シート  シートA  シートB  シートC  シートD があり、検索用シートの中には  リスト1・・・A,B,C,D  リストA・・・・E,F,G,H,I  リストB・・・・J,K,L,M,N,O  リストC・・・・P,Q,R,S,T  リストD・・・・U,V,W,X,Y,Z がとなっている。 リスト1にあるA~Bは製造会社 リストA~DにあるE~Zは製品名 シートA~Dには、製品E~Zの性能一覧 検索用シートの  セルA1  セルA3  セルA5 がリストを選択するセルとして、 (1) セルA1で、リスト1からA~Dの何れかを選択する。 (2) セルA1の選択結果から、該当する製造会社のリストをセルA3に反映させる (3) セルA3で選択した製品一覧から、一つの製品を選択し、セルA5のリストに反映させる (4) A5で選択させた製品から、必要項目だけを抜き出しA7~A20に表示させる。 当然各アクションは、ボタンを押すことにより反映するものとして作っていますが、自動記録でマクロを組んでいるのですが、選択したモノを反映させる方法が分かりませんし、自動記録のマクロでは、リストからの選択が反映されないようなのでお願いします。 エクセルのバージョンは2002か2003です。

  • エクセルのマクロで教えてください

    エクセルのマクロで教えてください A1に入っている値が変化するごとにD列に順にその変化を出力していきたいのですが マクロではどのようにしたらいいでしょうか A1には=C1+C2というような計算式が入っていてC2の数字を変えて計算結果が変わるごとに出力したいのですが

専門家に質問してみよう