- ベストアンサー
エクセルVBAで列名が#N/Aとなった列を削除するプログラムはどのように組めばよいのでしょうか?
エクセルVBAで列名が#N/Aとなった列を削除するプログラムはどのように組めばよいのでしょうか? 下記のような表です。 A B C D・・・・・ 1 イチゴ #N/A リンゴ #N/A 2 100 1 75 1 3 250 2 50 4 4 150 2 25 5 ・ ↓ A B ・・・・・ 1 イチゴ リンゴ 2 100 75 3 250 50 4 150 25 ・ よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 一例です。 Sub test() Dim i As Long, myLastCol As Long myLastCol = Cells(1, Columns.Count).End(xlToLeft).Column Application.ScreenUpdating = False For i = myLastCol To 1 Step -1 If IsError(Cells(1, i).Value) Then If Cells(1, i).Value = CVErr(xlErrNA) Then Columns(i).Delete End If End If Next i Application.ScreenUpdating = True End Sub
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17070)
>列名が#N/Aとなった列 珍しいことだと思うので、どういうことをして、列名が#N/Aとなったのか説明すること。 多分関数式を入れているのか。 式を入れてエラーが起こっているのか、文字列で入れているのか。 普通文字列を入れるわけで、見出し行でエラーが起こっているという質問例は無かったと思うぐらい珍しい。 第1行目の各列で、それ(の値)を捉えることが出来れば、マクロの記録で列削除のコードを勉強すればあとは簡単では。 ーー 参考 Sub test01() For j = 1 To 5 MsgBox IsError(Cells(1, j)) If IsError(Cells(1, j)) Then MsgBox Cells(1, j).Text End If Next j End Sub のCells(1, j).Textで#N/Aが捉えられると思う。
お礼
回答ありがとうございました。
補足
#N/Aになったのは、かなり特殊な表を作ったために起こっています。 表示したい表の大きさとその表があって、それとは別に列名と行名とその値の表を作っています。そして、別に作った表から読み込んで表示したい表を作ります。そのとき、必ずしも別の表にすべての列がないために、#N/Aが出てしまいます。この文章ではかなり分かりにくいと思いますが、理由は以上です。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 列や行自体を削除するときは、まとめて選択して削除します。 ただ、以下の場合は、数式のError が発生していることが条件です。 文字の場合は選択しません。 '------------------------------------------- Sub DelectErrorColumns() With Range("A1").CurrentRegion.Rows(1) On Error Resume Next .SpecialCells(xlCellTypeFormulas, xlErrors).EntireColumn.Delete On Error GoTo 0 End With End Sub
お礼
回答ありがとうございました。 助かりました。
- hige_082
- ベストアンサー率50% (379/747)
こんなのは如何? Sub test() Dim i For i = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1 If Cells(1, i).Text = "#N/A" Then Columns(i).Delete Next i End Sub 以上参考まで
お礼
回答ありがとうございました。 うまくいきました。
お礼
早々の回答ありがとうございました。うまくいきました。助かりました。