- 締切済み
一番左から1番目から3番目までの値の塊だけを置換
ああああああ があって あ を い に普通に置換すると いいいいいいい になりますが各セルの一番最初から文字別で数えて3番目までの値の塊だけを置 換する式を教えてください 変換元:ああああああ 検索文字:あ 置換文字:い 変換後:いいいいいい 検索文字を一つの値の塊とします 変換元:ああうえお 検索文字:え 置換文字 :半角スペース 変換後:ああうお 文字別にセル内で 一番左 から何番目に出てくるという基準で指定した値の塊を置換したいです 値の塊は一文字とは限りません 変換元:あああああい 検索文字:ああああ 置換文字:い 変換後:いあい この時はああああが一つの値の塊です 変換元:あああああい 検索文字:ああ 置換文字:い 変換後:いいあい 変換元:あああああい 検索文字:あ 置換文字:い 変換後:いいいいいい 検索文字を一つの値の塊とします 変換元:あいうえおかきくけこ 検索文字:きく 置き換え文字:キク 変換後:あいうえおかきくけこ あいうまでが3番目の値の塊なので変化なし 変換元:あいうえおかきくけこ 検索文字:おか 置き換え文字:オカ 変換後:あいうえおかきくけこ あいう までが3番目の値の塊なので変化なし 変換元:あああああい 検索文字:ああああ 置換文字 :い 変換後:いあい 変換元:かかかあああああい 検索文字:ああああ 置換文字:い 置換後:かかかいあい こういうことがA列の60000行のセルにできる式、マクロを教えてください 一つの値だけでなく複数の値を同時に検索し置換できるほうが良いです
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- SI299792
- ベストアンサー率47% (788/1647)
D1~D10 に検索文字 E1~E10 に痴漢文字 を入れるとします。 変換元はA1から下に入っているとします。 B1: =ChunkReplace(A1,D$1:E$10,3) 下へコピペ。 ユーザー定義関数です。以下のプログラムを標準モジュールに入れて下さい。 Option Explicit ' Function ChunkReplace(Word As String, Area As Range, ByVal Count As Integer) Dim Start As Integer Dim WorkStr As String Dim Length As Integer ' For Start = 1 To Len(Word) ' If WorkStr <> Mid(Word, Start, 1) Then Count = Count - 1 WorkStr = Mid(Word, Start, 1) ' If Count < 0 Then Exit For End If End If Next Start WorkStr = Left(Word, Start - 1) ChunkReplace = MultiReplace(WorkStr, Area) & Mid(Word, Start) End Function ' Function MultiReplace(Word As String, Area As Range) As String Dim Row As Long Dim FindWord As String Dim ReplWord As String ' MultiReplace = Word ' For Row = 1 To Area.Rows.Count FindWord = Area(Row, 1) ReplWord = Area(Row, 2) MultiReplace = Replace(MultiReplace, FindWord, ReplWord) Next Row End Function