アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル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

よろしくお願いいたします。

A 回答 (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
    • good
    • 1
この回答へのお礼

早々の回答ありがとうございました。うまくいきました。助かりました。

お礼日時:2009/12/27 20:51

>列名が#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が出てしまいます。この文章ではかなり分かりにくいと思いますが、理由は以上です。

補足日時:2009/12/27 20:54
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/27 21:07

こんにちは。



列や行自体を削除するときは、まとめて選択して削除します。
ただ、以下の場合は、数式の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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/27 20:54

こんなのは如何?



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

以上参考まで
    • good
    • 2
この回答へのお礼

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

お礼日時:2009/12/27 20:53

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

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