• 締切済み

Sub test01() Fr = Range("

Sub test01() Fr = Range("A1").End(xlDown).Row LR = Range("A100000").End(xlUp).Row For i = Fr + 1 To LR If Cells(i, "A") Like " *" Then Cells(i, "A").Replace What:="", Replacement:="", LookAt:=xlPart, MatchCase:=True End If Next i End Sub ""の中には置換前後の値が入る スペースとは限らない 各行のセルの1番最初の文字の塊を置換するこのマクロは一度に一値しか置換できませんが一度に10ぐらいの多くの値を置換できるよう改造したマクロを教えてください このマクロは1から1000000行のセルの一番左1番最初の文字の塊だけを置換できるので普通の置換とは違います 違いはすべての場所で置換されるかセルの一番左1番最初の文字の塊だけ置換されるかです ああああああ があって あ を い に普通に置換すると いいいいいいい になりますがこのマクロで置換すると いあああああ になります  あ は2文字目なので かああああ はそのまま変化なく置換したくありません  文字別に文字数を数えるというのではなくセル内で 一番左 一番最初 に出てくるという基準で指定した値の塊を置換したいです 値の塊は一文字とは限りません たとえば あああああい を検索文字 ああああ 置換文字 空白 の時 結果は あい にしたいです

みんなの回答

  • SI299792
  • ベストアンサー率47% (774/1618)
回答No.3

すみません。 =LeftReplaceM(A2,$C$2:$D$11) でした。 A10000がエラーになっている。 A10000にVBA で扱えない特殊文字が入っている。 どちらかだと思います。 それが何なのかは、直接ワークブックを見ないと判りません。 データ便 https://www.datadeliver.net/1 グーグルドライブ https://www.google.com/intl/ja_ALL/drive/ に上げていただければ見ます。

  • SI299792
  • ベストアンサー率47% (774/1618)
回答No.2

9999行迄成功しているのですね。 10000 件以上データを作り、やってみましたが、そのような現象は起きていません。 セル上にエラーがあるとそうなります。 A10000がエラーになっていないか確認して下さい。 これは、ユーザー定義関数としても使えるので、 B2: =LeftReplaceM(A2) 入力して下へコピペしてみて下さい。

nakanakaokwave
質問者

補足

マクロを適用し検索置換文字も入れたうえでB2:=LeftReplaceM(A2) 入力して下へコピペすると #VALUEとなりすべての行でエラーになります

  • SI299792
  • ベストアンサー率47% (774/1618)
回答No.1

検索文字列列、置換文字列列をセル上に置く方式でいいですか。 C2~C11 に検索文字列列、D2~D11 に置換文字列列を置いて実行して下さい。 Option Explicit ' Sub Macro1()   Dim Row As Long   Dim Expression As String '   For Row = [A1].End(xlDown).Row To Cells(Rows.Count, "A").End(xlUp).Row     Expression = Cells(Row, "A")     Cells(Row, "A") = LeftReplaceM(Expression, [C2:D11])   Next Row End Sub ' Function LeftReplaceM(Expression As String, FindArea As Range)   Dim Row As Integer   Dim FindStr As String   Dim Length As Integer '   LeftReplaceM = Expression '   For Row = 1 To FindArea.Rows.Count     FindStr = FindArea(Row, 1)     Length = Len(FindStr) '     If Expression Like FindStr & "*" Then       LeftReplaceM = FindArea(Row, 2) & Mid(LeftReplaceM, Length + 1)     End If   Next Row End Function

nakanakaokwave
質問者

補足

A列1万行から先の値に式が適用されません 実行時エラー13 型が一致しません といつもでます

関連するQ&A