2016-03-22 4 views
1

私は先進のフィルタを使用しています。とりわけ、0と1を使用しています。データシートに1と0のセルに "Number as text as text"というエラーメッセージが表示されている場合にのみ、フィルターが正しく機能します。そのためには、手動でセルをダブルクリックして開き、Enterキーを押す必要があります。その後、エラーメッセージが表示され、フィルタが機能します。私がそれをしなければ、フィルターは動作しません。「テキストとして保存された番号」エラーを表示します。

また、1または0のセルをクリックしてF2キーを押すと、エラーメッセージが表示されます。

私はそれを自動的に行うことができるVBAの方法はありますか?

ご協力いただきありがとうございます。

+1

VBAのための必要はありませんが。 (1)Excel関数を使用して値をテキストに変換するか、数値= Value()を使用するか、または(2)その列のすべての値に数値を掛けることができます。 1とExcelは自動的にテキストとして格納されているすべての数値を数値に変換します。後者を達成するには、シートのどこかに1を入力するだけで、1をコピーし、変換する列を選択し、 'Paste Special 'を使用して' Values'だけを掛けます。 – Ralph

+0

こんにちはRalph、ありがとう、私は数字としてテキストとして格納されている数値を変換したくないです。セルに入って「Enter」キーを押すことなく、エラーメッセージが自動的に表示されます。数字をテキストとして保存し、エラーメッセージが表示されるようにします。これは、Advanced Filterが正しく動作する唯一の方法です。 –

+0

数字1または0をフィルタリングするようにフィルタを変更します。これは簡単です(上記の複数の選択肢がある場合)。あなたがテキストのためにExcelを乱用したいなら、それは複雑になり、すべてを行うにはVBAのサブを書く必要があります。しかしExcelはテキストのためのものではなく、数字のためのものです。だから私は簡単な方法で説明した通りに行くだろう。 – Ralph

答えて

2

セルのRangeプロパティ、特にErrorsコレクションに深く埋もれていることがわかります。ちょうどそのエラーが存在している細胞を見つけ、その後、TrueIgnoreプロパティを設定します。

Public Sub IgnoreNumsAsText() 
    Dim current As Range 
    For Each current In ActiveSheet.UsedRange.Cells 
     With current 
      If .Errors.Item(xlNumberAsText).Value = True Then 
       .Errors.Item(xlNumberAsText).Ignore = True 
      End If 
     End With 
    Next current 
End Sub 
関連する問題