• 締切済み

ある処理を列全体でループ処理させたい(Excel)

あるExcelファイルで隠し文字みたいなものが、セルの最後に 含まれているファイルがあるのですが、その状態のセルがある 場合、認識可能な文字に置換させたいです。 例えば、列A行2のセルの最後にある隠し文字(Ascw143)が あった場合、@に置換させるには、下のようにすれば対応可能 ですが、これをA列全体に適用させる場合、どのようにループ 処理を組めばよいか教えてください。 Sub test() If AscW(Right(Range("A2"), 1)) = 143 Then Range("A2") = Range("A2") & "@" End If End Sub なお、Excelですが、2010を使用しています。

みんなの回答

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.4

済みません。 No.3に誤りがありました No.3を無視して下さい ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Sub test() If AscW(Right(Range("A2"), 1)) = 143 Then Range("A2") = Range("A2") & "@" End If End Sub が実行可能なら一例ですが --------------------------------------------------------- Sub test() Dim セル, AAA As String Dim i, j As Double AAA = "ABCDEF" For i = 1 To 100 For j = 1 To 6 セル = Mid(AAA, j, 1) セル = セル & i If AscW(Right(Range(セル), 1)) = 143 Then Range(セル) = Range(セル) & "@" End If Next j Next i End Sub

yukisaka
質問者

お礼

一例、ありがとうございます。 ただ、そのままコピーして実行させると、 実行時エラー'5': プロシジャの呼び出し、または因数が不正です となってしまいました。

yukisaka
質問者

補足

質問者です。 試行錯誤してみたところ下記で対応することができました。 これまでの返信ありがとうございました。 Sub test_a() Dim i As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If AscW(Right(Cells(i, 1), 1)) = 143 Then Cells(i, 1) = Cells(i, 1) & "@" End If Next i End Sub

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

Sub test() If AscW(Right(Range("A2"), 1)) = 143 Then Range("A2") = Range("A2") & "@" End If End Sub が実行可能なら一例ですが ---------------------------------------------------------------------- Sub test() Dim セル, AAA As String Dim i, j As Double AAA = "ABCDEF" For i = 1 To 100 For j = 1 To 6 セル = Mid(AAA, j, 1) セル = セル & i If AscW(Right(Range(セル(j)), 1)) = 143 Then Range(セル) = Range(セル) & "@" End If Next j Next i End Sub

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.2

for i=行の最初  to 行の最後 c="A"& cstr(i) .............. range(c) .............. next 一行ずつやると時間かかるかもしれない。 rangeで範囲を指定して一度にできるかもしれない。 いい加減で申し訳ない。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.1

文字列が確定しているなら Excel2010のホームリボンの検索と選択で処理できませんか Excel2010にASCW()関数は使えますか ASC()関数でよいのでは、RIGHT()関数も不要です。 Sub test() If Asc(Range("A2")) = 143 Then Range("A2") = Range("A2") & "@" End If End Sub 尚、参考URLで文字以外のコードを調べました。 ()内は16進数です 0(00)はNUL 1(01)~32(20) 127(7F)~160(A0) 224(E0)~255(FF)

参考URL:
http://www12.plala.or.jp/mz80k2/electronics/ascii/ascii.html
この投稿のマルチメディアは削除されているためご覧いただけません。
yukisaka
質問者

お礼

ASCW()関数を使えています。 Sub test() If AscW(Right(Range("A2"), 1)) = 143 Then Range("A2") = Range("A2") & "@" End If End Sub であれば、セルA2の隠しコード(PC画面では表示されない)を@に変換して@を表示させることができますが、教えていただいたASCの方では変換できません。 どうも海外の2バイト言語(中国語?、ロシア語?)でNUL値のようなコードのようです。 上の例はセルA2のみの変換ですが、A列すべてに対して変換が可能になるサンプルを教えていただけないでしょうか。

yukisaka
質問者

補足

Excel2010のホームリボンの検索と選択で処理できませんか に対してですが、検索や置換の処理はできません。 マクロの記録も実施できません。 文字列の最後にPC画面上では表示されない隠しコード(AscW143)がくっ付いているようなのですが、コピーできない状態です。

関連するQ&A