[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数シートのいらない列の削除』(PON)
みなさんおはようございます。
自分では考えもつかなかったので,教えてください。
まず部屋の管理をしてます。
A列からD列まで項目名がはいってます。G8に部屋名 G9に管理番号がはいってます。
A-D G8 I8
集会所 仮眠室
G9 I9 10000 20000 水道 100円 50円 光 20円 30円 集会使用料 50円 15円
このようなデータが複数列・複数シートにまたがっています。
ちなみに部屋の列の並び順は順不同です。部屋がないときもあります。
しかし,仕事で使うのは 4部屋だけなので,この指定した番号以外
の列を消したいのです。(A−D列は必ず残したいです。)
どうかVBAをおしえいていただきますと幸いです。
消したい範囲をセルアドレスで説明できますか? 全シートの E:F、H列とか。
全シートが同じであれば、手作業でも全シートを選択して一回の削除操作でできます。 (Mook)
残念ながらバラバラです。
例えば
シート1
部長室 洗面室 事務室
シート2
洗面室 事務室 休憩所
などになっております。
うーん、説明だけではどこを削除したいのかが特定できません。
もう少し具体的なサンプルを提示できるでしょうか。 例えば シート1 のレイアウトはどうなっていて、どこを削除したいのでしょうか。 (Mook)
例(A-D列) G列H列
○○棟 集会所
800←管理ナンバー
光熱費 100円
集会室使用量 200
合計 300円
こういうデータが複数列複数シートにあるのですが,私の欲しいのは管理ナンバ−が特定の物(数個)
ですのでそれ以外のデータ(列)を削除したいです。その際にA−D列は残しときたいです。
では、A:D 列は保持、E列以降9行目が特定の値(管理番号)以外の列を削除 でよいのでしょうか。 (Mook)
こんなことでしょうか。 (Mook)
Sub Sample() Const KEEP_CODE = 800 '// 保持する管理番号
Dim ws As Worksheet Dim c As Long Dim lastCol As Long Application.ScreenUpdating = False For Each ws In Worksheets lastCol = ws.Cells(9, Columns.Count).End(xlToLeft).Column If lastCol > 4 Then ws.Range(ws.Cells(1, lastCol + 1), ws.Cells(1, Columns.Count)).EntireColumn.Clear For c = lastCol To 5 Step -1 If ws.Cells(9, c).Value <> KEEP_CODE Then ws.Columns(c).Delete Next End If Next Application.ScreenUpdating = True End Sub
大切な事をお伝えしませんでした。管理ナンバーがはいっているセルは結合セルでした。
そのせいか,うまく行かなかったのでもう一度御指示をいただけたらと思います。
If ws.Cells(9, c).Value <> KEEP_CODE Then ws.Columns(c).Delete を If ws.Cells(9, c).MergeArea.Cells(1, 1).Value <> KEEP_CODE Then ws.Cells(9, c).MergeArea.EntireColumn.Delete に変更。 (Mook)
PONです。確認させていただきました。
うまくいきました。
ちなみに,シートが沢山あるので,管理番号で該当しないシートは削除したいのですが
VBAを教えていただけませんでしょうか
ぜひお願いします。
If Application.CountIf(ws.Range("E9").Resize(1, Columns.Count - 4), KEEP_CODE) = 0 Then Application.DisplayAlerts = False ws.Delete Application.DisplayAlerts = True Else 今の For 〜 Next 内の処理 End If (Mook)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.