電子書籍の厳選無料作品が豊富!

日々あるデータが送られてきます。
A~AEまであります。
マクロで下記のようにしたいのです。
残すのはA、C、N、T、U、V、W、Z、AAのみですが順序を入替えたい。
順番としてC、A、T、U、W、V、AA、Z、Nの順です。

どのようにすれば良いのか教えて下さい。
もし補足が必要なら申し付け下さい。

A 回答 (8件)

#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だと横のソートが出来るんですね!
    • good
    • 0
この回答へのお礼

御礼が大変遅くなりました事をお詫び致します。
その後なんとか上手くいくようになりました。
素人の私にも比較的分り易い内容でお陰で助かりました。

しかしその後若干の仕様の変更があった為、再度御教授願う事になるかもしれません。
その時はまた宜しくお願い致します。

お礼日時:2007/05/08 08:53

こんにちは。



回答ではありませんが、Wendy02さんが触れてないのでMerlionXXさんに一言。
それにもしかして質問者もご存知ないかもしれないので。。。

>VBAだと横のソートが出来るんですね!

VBAでなくてもできますが。。。(^^;;;
 

それからご自分の回答を拙いコードだと仰ってますが
質問者のレベルをちゃんと考慮している点に置いて優れた回答だと思いますよ。
 
    • good
    • 0

こんにちは。



下から数えて、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
    • good
    • 0
この回答へのお礼

御礼が大変遅くなりました事をお詫び致します。
その後なんとか上手くいくようになりました。

しかしその後若干の仕様の変更があった為、再度御教授願う事になるかもしれません。
その時はまた宜しくお願い致します。

お礼日時:2007/05/08 08:54

こんにちは。



#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
    • good
    • 0
この回答へのお礼

早々に御回答頂きました事に感謝致します。
お礼が遅くなったしまいました事をお詫び致します。
その後、確認致しましたところ下記の部分の追加が必要となりました。
再度お手数ですが御教授願えれば幸いです。

順番に並び替えますと元データのAA、Zが7番目8番目にきます。
でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。
それをそれぞれ「仕入数」「仕入単価」に変えたいのです。
さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と
「販売単価」の掛け合わせた数値を入れたいのです。
で、10番目に元データのNをそのまま反映させて、さらに11番目に
項目名「備考」という列を新たに作成したいのです。
「備考」の列は項目以外の行は空白です。

以上になりますが補足が必要な際は申しつけ下さい。

お礼日時:2007/04/22 11:39

こんにちは。


方法はいくつかあると思いますが、一案。

新しくシートを追加してそこにコピー抽出していく方法です。
    ●元シート名は、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
'------------------------------------------------------------

それからこういった類の処理には上記のように配列を利用することをお勧めします。
配列に「並べたい順番に」抽出したい列番号を入れておくと、
順番を変えたい時とか、抽出したい列の増減にも柔軟に対応が出来ますから。

 
    • good
    • 0
この回答へのお礼

早々に御回答頂きました事に感謝致します。
お礼が遅くなったしまいました事をお詫び致します。
その後、確認致しましたところ下記の部分の追加が必要となりました。
再度お手数ですが御教授願えれば幸いです。

順番に並び替えますと元データのAA、Zが7番目8番目にきます。
でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。
それをそれぞれ「仕入数」「仕入単価」に変えたいのです。
さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と
「販売単価」の掛け合わせた数値を入れたいのです。
で、10番目に元データのNをそのまま反映させて、さらに11番目に
項目名「備考」という列を新たに作成したいのです。
「備考」の列は項目以外の行は空白です。

以上になりますが補足が必要な際は申しつけ下さい。

お礼日時:2007/04/22 11:40

#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
    • good
    • 0
この回答へのお礼

早々に御回答頂きました事に感謝致します。
お礼が遅くなったしまいました事をお詫び致します。
その後、確認致しましたところ下記の部分の追加が必要となりました。
再度お手数ですが御教授願えれば幸いです。

順番に並び替えますと元データのAA、Zが7番目8番目にきます。
でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。
それをそれぞれ「仕入数」「仕入単価」に変えたいのです。
さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と
「販売単価」の掛け合わせた数値を入れたいのです。
で、10番目に元データのNをそのまま反映させて、さらに11番目に
項目名「備考」という列を新たに作成したいのです。
「備考」の列は項目以外の行は空白です。

以上になりますが補足が必要な際は申しつけ下さい。

お礼日時:2007/04/22 11:40

こんな感じですか?



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
    • good
    • 0
この回答へのお礼

早々に御回答頂きました事に感謝致します。
お礼が遅くなったしまいました事をお詫び致します。
その後、確認致しましたところ下記の部分の追加が必要となりました。
再度お手数ですが御教授願えれば幸いです。

順番に並び替えますと元データのAA、Zが7番目8番目にきます。
でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。
それをそれぞれ「仕入数」「仕入単価」に変えたいのです。
さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と
「販売単価」の掛け合わせた数値を入れたいのです。
で、10番目に元データのNをそのまま反映させて、さらに11番目に
項目名「備考」という列を新たに作成したいのです。
「備考」の列は項目以外の行は空白です。

以上になりますが補足が必要な際は申しつけ下さい。

お礼日時:2007/04/22 11:39

要望の内容であれば、


「マクロの記録」を使って
・不要列の削除
・列の切り取って挿入し並びを入れ替え
で十分と思いますが。
    • good
    • 0
この回答へのお礼

早々に御回答頂きました事に感謝致します。
お礼が遅くなったしまいました事をお詫び致します。
その後、確認致しましたところ下記の部分の追加が必要となりました。
再度お手数ですが御教授願えれば幸いです。

順番に並び替えますと元データのAA、Zが7番目8番目にきます。
でAAの項目には「出荷数」Zの項目には「販売単価」と元データには入っています。
それをそれぞれ「仕入数」「仕入単価」に変えたいのです。
さらに9番目の列に「合計金額」という新たな項目を作り「出荷数」と
「販売単価」の掛け合わせた数値を入れたいのです。
で、10番目に元データのNをそのまま反映させて、さらに11番目に
項目名「備考」という列を新たに作成したいのです。
「備考」の列は項目以外の行は空白です。

以上になりますが補足が必要な際は申しつけ下さい。

お礼日時:2007/04/22 11:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!