- ベストアンサー
エクセル 全角と半角混在で特定の文字以外削除
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 必ず先頭の文字は > 「C05」や「m04」、「a16」など、英頭文字+数字となるので、 > それ以外を削除したいです。 CheckStr = StrConv(Cells(i, "G").Value, vbNarrow) For j = 1 To Len(CheckStr) If Mid(CheckStr, j, 1) Like "[A-z]" = True Or _ Mid(CheckStr, j, 1) Like "[0-9]" = True Then Flag = False End If Next j の部分を以下のように変更してください。 CheckStr = StrConv(Cells(i, "G").Value, vbNarrow) If Len(CheckStr) >= 3 Then If Mid(CheckStr, 1, 1) Like "[A-z]" = True And _ IsNumeric(Mid(CheckStr, 2, 2)) = True And _ Mid(CheckStr, 4, 1) Like "[0-9]" = False Then Flag = False End If End If 「A01AAA・・」や「A01A12・・」は残しますが、「A1A123・・」や「AA1234・・」や「A012・・・」(4文字目以降も数値が並ぶ)及び3文字未満は削除します。「A012・・・」(4文字目以降も数値が並ぶ)を残したい場合は(ただし「A1A123・・」や「AA1234・・」及び3文字未満は削除します) CheckStr = StrConv(Cells(i, "G").Value, vbNarrow) If Len(CheckStr) >= 3 Then If Mid(CheckStr, 1, 1) Like "[A-z]" = True And _ IsNumeric(Mid(CheckStr, 2, 2)) = True Then Flag = False End If End If End If また、動作が遅い場合 最初の方 Dim Flag As Boolean Application.ScreenUpdating = False'←これを入れる Sheets("Sheet1").Activate '実際のシート名に変更してください。 最後に Application.ScreenUpdating = True'←これを入れる End Sub としてください。
その他の回答 (2)
- kkkkkm
- ベストアンサー率66% (1734/2604)
> 1.全角と半角混在しているのですが、全角英数と半角英数が入っているもの以外を行削除 G列のような気もするのでG列を対象にしています。 ColorIndexは以下のページを参考に http://www.relief.jp/itnote/archives/000482.php Sub Example() Dim i As Long, j As Integer Dim CheckStr As String Dim Flag As Boolean Sheets("Sheet1").Activate '実際のシート名に変更してください。 For i = Cells(Rows.Count, "G").End(xlUp).Row To 2 Step -1 Flag = True If Cells(i, "F") <= 0 Then Flag = True Else CheckStr = StrConv(Cells(i, "G").Value, vbNarrow) For j = 1 To Len(CheckStr) If Mid(CheckStr, j, 1) Like "[A-z]" = True Or _ Mid(CheckStr, j, 1) Like "[0-9]" = True Then Flag = False End If Next j End If If Flag = True Then Cells(i, "H") = "del" 'テスト時に削除行を確認するためですので 'H列のdelが実際に削除される行と一致した場合に下のDeleteを有効にして上を削除してください 'Rows(i).Delete ElseIf Cells(i, "C").Value = "特定の文字" Then Cells(i, "C").Interior.ColorIndex = 4 End If Next End Sub
お礼
ありがとうございます。できました!欲を言いますと、必ず先頭の文字は 「C05」や「m04」、「a16」など、英頭文字+数字となるので、 それ以外を削除したいです。お分かりになりましたら、教えて頂けると幸いです。
- ushi2015
- ベストアンサー率51% (241/468)
こんばんは 全角と半角混在って、どこの列ですか? 画像では、 型番は全角英数と半角英数だけみたいですし、 配送番号は全てに全角ひらがなが入っているみたいですし、 名前は全て全角ひらがながですし。 C列の特定の文字をどう指定したいのかも分からないですし。 F列の0以下を行削除はオートフィルタで絞り込んで削除をマクロに記録してみれば すぐ出来そうですし。
お礼
ご回答頂きましてありがとうございます。
補足
ご回答ありがとうございます。全角と半角混在はG列です。C列の特定文字は、「あいうえお」となっていたら黄色で塗りつぶす、「かきくけこ」となっていたら赤色で塗りつぶすというようにしたいです。F列の行削除は、おっしゃるとおりですが、毎回、行数が変わるので、フィルタを掛けずに、 F列の「0以下」を削除したかったのです。 分かりにくい文章で申し訳ございませんでした。
お礼
できました!本当にありがとうございます。助かりました。 一旦これをベストアンサーにさせて頂きますが、 もうひとつありまして、同じ「G列」に何も書かれていない空白もありまして、その行は削除したくないのですが、どのようにやればいいでしょうか。 お手数おかけして本当に申し訳ないです。分かればでいいので、 教えて頂けると助かります。この度は、本当に有難うございました。