- ベストアンサー
VBAお分かりになる方お願いします
いつもお世話になっております。 VBAお分かりになる方ご教授下さい。 端末はVista、Excel2003を使用中です。 やりたいことは、以下の内容です。 例えは1行目に項目名として、セルA1から 「商品CD」,「商品名」,「原価」,「販売価格」 という内容表があるとします。 項目名に「商品CD」,「商品名」と入っていない列は 削除するという作業を記述したいのですが、 どのように記述すれば宜しいでしょうか? ご回答宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
どうも私の解釈は他の方とは違うようなので、一応念のため。 ・非表示ではなく削除ですよね? ・削除するのは行ではなく列ですよね? -------------------------------------------------- さて。 あくまでサンプルコードですし、 お世辞にもスマートとは言えませんが…。 動作の概要 アクティブなシートの1行目を調べて、 値が"商品CD"でも"商品名"でもなければ、その列を削除する。 不可逆処理なのでバックアップとテストをお忘れなく。 '---------------------↓ ココカラ ↓--------------------- Sub Sample() Dim mySht As Worksheet Dim idRow As Long Dim ltCol As Long Dim i As Long Application.ScreenUpdating = False Set mySht = ActiveSheet '←アクティブシートについて処理 idRow = 1 '←1行目を調べる ltCol = mySht.Cells.SpecialCells(xlCellTypeLastCell).Column For i = ltCol To 1 Step -1 Select Case mySht.Cells(idRow, i).Value '↓「削除しない」項目名を列挙 Case "商品CD", "商品名" Case Else mySht.Columns(i).Delete End Select Next i Application.ScreenUpdating = True End Sub '---------------------↑ ココマデ ↑--------------------- Excel2003で動作確認。 ※ 作業列等で見出行が入力されていない場合を考慮し、 ENDで最終列を取得するのではなく、 UsedRageの1行目をすべて調べ上げています。 ※ 残す列が2つだけであればIF判定でも良さそうですが、 実際はたくさんあるかもしれないのでSelect Caseで判定しています。 以上ご参考まで。
その他の回答 (3)
- ptg
- ベストアンサー率57% (4/7)
VBAを使用しなくてもExcelの基本機能であるオートフィルター機能で対応できると思います。 やり方は、 1)リスト全体を範囲選択 2)[データ]→[フィルター]→[オートフィルター] 3)項目「商品CD」右側にある下向き三角ボタンをクリックし、[空白セル]をクリック。 4) 「商品名」のところでも3と同様に行う。 5)「商品CD」と「商品名」の両方が空白の行が表示されますのでその状態で該当行を選択し、行の削除を行う。 6)リスト内を選択し、[データ]→[フィルター]→[オートフィルター]をクリックし、オートフィルターを解除する。 初めて行う操作でしたら念のためファイルのバックアップを取ってから行うことをお勧めします。
お礼
ご回答ありがとうございます。 私が操作するのではなく、別の人に配布しなくてはいけないので 私が操作できるだけでは意味が無いのです。 もちろんオートフィルタの使い方は知っています。 用途としては、登録用ファイルから不要な項目を削除して 保存用ファイルを作成する為です。 自動記録を使って不要な行を削除するのが一番簡単なことは 分かっています。 ただ、このやり方だと、勝手に項目を並び替えたり、追加してしまうと 必要な業を削除してしまう為、名前で指定して作業したかったのです。 ありがとうございました。
- higekuman
- ベストアンサー率19% (195/979)
オートフィルター
- magician_1
- ベストアンサー率26% (27/101)
【データ】-【並べ替え】では駄目なのでしょうか?
補足
早速のご回答ありがとうございます。 私の説明が不十分でした。 4項目ある表から、必要な項目の列だけ残して不要な項目は削除したい だけなので、並び替えたいわけではありません。 ありがとうございました。
お礼
ご回答ありがとうございます。 ご丁寧にご回答頂き、感謝致します。 思った通りのことが出来ました!! 実際は約30項目を半分にしなければいけないので、 参考にさせて頂きます。 ありがとうございました。 機会がありましたらまた宜しくお願い致します。