2017-01-03 15 views
0

カラムAに日付を記載したスプレッドシートを持っています(2010年12月1日1:45:00)。この列のすべてのセルを再フォーマットして、Day、Month#、Yearを表示します。例Thursday, December 01, 2016Find関数は、実際の検索ボタンをクリックして値を検索すると機能しますが、これをコード化するのには苦労しています。私は "土曜日"と "日曜日"を含むすべての行を削除したいと思います。私が試みた最新のコードは以下の通りです。セルの一部の値に基づいて行全体を削除します

Last = Cells(Rows.Count, "D").End(xlUp).Row 
For i = Last To 1 Step -1 
    If (Cells(i, "D").Value) = "*Saturday*" Then 
Cells(i, "A").EntireRow.Delete 
    End If 
Next i 

また、次のコードも試しました。

Set Find = Range("A:A").Find("Saturday", LookIn:=xlValues) 
Do Until Find Is Nothing 
    Find.EntireRow.Delete 
    Set Find = Range("A:A").FindNext 
Loop 
+0

使用 'Like'にルックアットパラメータを設定します。' "*土曜日*" Then'のように(。細胞(I、 "D")の値) –

答えて

0

変更

If (Cells(i, "D").Value) = "*Saturday*" Then` 

なく、基礎となる値(日付である)よりも、表示された値にアクセスするText代わりValueのを使用して、その代わりにLikeを用い

If (Cells(i, "D").Text) Like "*Saturday*" Then 

=の場合、ワイルドカードを使用できます。どの列の日付がでているよう


あなたの質問は混乱しています。あなたのコード(とあなたの質問)のいくつかは、彼らが列Aにある提案するが、彼らがしている場合は、コードの他の部分が列Dを示唆します上記のコードを"D"の代わりに"A"を使用するように変更します。

1

xlPart

Find("Saturday", , , xlPart) 
+1

うわー場合 - 私がいることを忘れていました'Find'は、どのパラメータが最後に使用されたかを「記憶」します。したがって、 'LookAt:= xlPart'を省略すると、OPが以前に手動で' Find'を実行していたとしても、以前の 'find'が' xlWhole'のものであれば動作しません。それはOPのコードがなぜ私のために働いたのかを説明します。 – YowE3K

+0

ええ、これは楽しいビットの一つです。 :)強固なアプローチは、現在の設定を保存し、Findメソッドを実行して、リセットしたものです。 – cyboashu

関連する問題