dポイントプレゼントキャンペーン実施中!

たびたびマクロで質問です。
windows-xp、エクセル2003を使っています。

教えてください。
1行目に表の「項目」がいろいろ入っています。
そこで、指定する項目「品目コード、個数、」の行だけを残し、それ以外は全て削除というコードを教えて頂けませんでしょうか。

1行目に表の「項目」がくるというのはたぶん今後も変わらないと思うのですが、項目位置がときどき変わることがあるかもしれません。
(たとえばB列の項目が、時にはF列の項目になっていたり・・・)
なので、指定する項目(品目コード、手番、在庫・・・)だけを残して列を削除する。ということをしたいのです。
本をみたりしたのですが、列の削除ってそんなになくて。。。行の削除ならあるのですが・・・

すみませんが、宜しくお願い致します。

A 回答 (4件)

再度の補足です。


エクセルのマクロにはFor文だけでなく、DOループが用意されている
ようです。これを使えばもっと簡潔に記述できます。


Sub Macro2()

 Dim i

 i = 2    '探索開始列

 Do
  If Cells(1, i) <> "品目コード" And Cells(1, i) <> "手番" Then
   Columns(i).Delete
  Else
   i = i + 1
  End If
 Loop Until Cells(1, i) = ""

End Sub
    • good
    • 3

2番に回答した者です。



補足説明です。
1列目を残して2列目以降にこの処理をしたければ、
For i = 2 To
としてくださいね。

いきなり試さず、データをバックアップした上で
自己責任でお願いします。
    • good
    • 0

こんなんでどうでしょう?


1行目のセルの中身を見て空白セルなら終了。
そうでなければ、「品目コード」「手番」かチェックし違うなら列削除
削除した場合は、次の列が左へシフトしてるので、もう一度同じ列を
チェックするためにカウンター(i)を戻す(1引く)
この例では、抽出する列を10と仮定してループをまわしています。

Sub Macro1()

 For i = 1 To 10
  If Cells(1, i) = "" Then
   Exit For
  ElseIf Cells(1, i) <> "品目コード" And Cells(1, i) <> "手番" Then
   Columns(i).Delete
   i = i - 1
  End If
 Next i

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

お礼が遅くなり大変申し訳ありません。
いろいろなやり方、大変参考になりました。
ありがとうございました!!

お礼日時:2007/07/15 13:34

アルファベット部分(一番上のバー)を横へドラッグして右クリック→削除では当たり前すぎですか?

この回答への補足

回答ありがとうございました。

はぃ、やはりマクロがいいです。
いちいち項目を見ながら、これは残して、消して、という作業をするのは面倒だと思います。

なので、コードを教えて頂けたらと思った次第です。

補足日時:2007/05/14 23:04
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています