[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『タイトル行が2行ある場合の検索&削除』(パピコ)
以下のような表が2シートから最終列まであります。
(表の構成)
・1,2行目は空白
・3,4行目はタイトル行
「空」←空白行
・5,6行目以降データ
■処理前
A B C D E F G H I J K L … 1 2 3 No. 空 空 空 空 名称 動作 備考 設定値 空 発行 配布 … 4 a b c d ab-cd 空 空 空 min max ○ × … 5 6
----***----
やりたいことは、
1.3行目から残したいタイトル行を検索する。(No.,名称,動作,設定値)
2.4行目から残したいタイトル行を検索する。(a,b,c,d,ab-cd,min,max)
3.それ以外の列を削除する
4.2シートから最後のシートまで繰り返し処理
■処理後
A B C D E F G H I … 1 2 3 No. 空 空 空 空 名称 動作 設定値 空 … 4 a b c d ab-cd 空 空 min max … 5 6
----***----
このようにしたいのですが、
VBAコードを教えていただけないでしょうか(>_<)
(ファイルを開くなどのコードは不要)
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
Sub test() Dim i As Long Dim j As Long
Application.ScreenUpdating = False
For i = 2 To Sheets.Count With Sheets(i) For j = .Range("A3").CurrentRegion.EntireColumn.Count To 1 Step -1 If Not "|No.|名称|動作|設定値|" Like "*|" & .Cells(3, j).Value & "|*" Then If Not "|a|b|c|d|ab-cd|min|max|" Like "*|" & .Cells(4, j).Value & "|*" Then .Columns(j).Delete End If End If Next j End With Next i
Application.ScreenUpdating = True End Sub (???) 2017/03/07(火) 13:07
ちょっと変化球ですが。 空白の1行目を、こっそりと作業域に使っています。
Sub Sample() Dim x As Long Dim col As Long
Application.ScreenUpdating = False
For x = 2 To Worksheets.Count With Worksheets(x) col = WorksheetFunction.Max(.Cells(3, Columns.Count).End(xlToLeft).Column, .Cells(4, Columns.Count).End(xlToLeft).Column) With .Range("A1").Resize(, col) .Formula = _ "=IF(OR(ISNUMBER(MATCH(A3,{""No."",""設定値"",""名称"",""動作""},0)),ISNUMBER(MATCH(A4,{""a"",""b"",""c"",""d"",""ab-cd"",""min"",""max""},0))),"""",1)" On Error Resume Next .SpecialCells(xlCellTypeFormulas, xlNumbers).EntireColumn.Delete On Error GoTo 0 End With .Rows(1).ClearContents End With Next
End Sub
(β) 2017/03/07(火) 14:16
丸投げの質問にも関わらず、ご回答いただきありがとうございます。
(β)様の回答が一番理想に近かったので
こちらのコードを参考にさせていただきます。
ありがとうございました。
(パピコ) 2017/03/07(火) 14:39
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.