No.6ベストアンサー
- 回答日時:
こんばんは。
一般関数では思いつきませんでした。
'<標準モジュール>
Function RegSubstitute(ByVal Longtext As String, arg As String)
'RegSubstitute(文字列, シュリンプする文字列)
'正規表現を使ったユーザー定義関数
Dim buf As String
Dim Match As Object
Dim Matches As Object
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = False
.Pattern = arg & "+"
Set Matches = .Execute(Longtext)
buf = Longtext
If Not Matches Is Nothing Then
For Each Match In Matches
buf = Replace(buf, Match.Value, arg)
Next
End If
End With
RegSubstitute = buf
End Function
No.5
- 回答日時:
質問でのaに当たる文字の繰り返しが3,4文字以上もありえて制限がないなら、VBAなどのプログラムの問題でしょう。
参考に
Sub test01()
For i = 1 To 10 '1行から10行まで繰り返し
a = Cells(i, "A") 'A列i行の文字列について
s = Mid(a, 1, 1) '第1文字(最初の先頭文字)を取り出す
For j = 2 To Len(Cells(i, "A")) '2文字目以降の各1文字について
If Right(s, 1) <> Mid(a, j, 1) Then '累積の最後の文字と今の文字が違えば
s = s & Mid(a, j, 1) '今の文字を連結する
End If
Next j '文字数だけ繰り返し
Cells(i, "B") = s '出来上がった文字列をB列に入れる
Next i
End Sub
データ例
aaaabcdaa abcda
山山上上上田上 山上田上
ssdtddtってf sdtdtってf
dfgbnvvbg dfgbnvbg
No.4
- 回答日時:
テキストファイルに書き出して、正規表現の使えるエディタやツー
ルで置換して書き戻すのが簡単。なにしろPerl風だと
s/a+/a/ g;
でおしまい。
秀丸エディタやJEditで使用可能です。
回答いただきありがとうございます。
正規表現+秀丸でそんなこともできるんですね。
ありがとうございます!
また、Excelで気軽に使えると、データが増えても簡単に他所で切るので、引き続き、ご存知の方、宜しくお願い致します。
No.3
- 回答日時:
上記のaが4つまでなら
=SUBSTITUTE(SUBSTITUTE(A1,"aa","a"),"aa","a")
でできますが、そういうことではありませんよね。
厳密に同じ文字が続いたら圧縮するということであれば
ユーザー定義関数を作るしかないと思います。
回答いただきありがとうございます。
aという文字が続く場合は、確実に一文字のaにしたいと思っています。また、セルに入力されている数が多く、aがいったい何文字続いているのかまったく分からない状況です。
もし、お時間がありましたら、ご教示、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セル内の一部に別セルを差し込む 3 2022/09/18 04:39
- Excel(エクセル) Excelの関数で実現可能か知りたいです 5 2023/08/06 08:58
- Excel(エクセル) A、B、C・・・AA、ABと連番でふりたい、調べても式の意味がわからずパニックになってしまう 1 2023/01/23 19:17
- 統計学 個別の期待値は小さいけど集計すると期待値は大きくなる場合とは? 4 2022/06/14 08:27
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) substitute関数についての質問です 3 2023/06/21 11:57
- Excel(エクセル) Excelグラフについて教えて下さい。 a1からz1までに計算式を入れてグラフにしました。 まだ値が 2 2022/12/01 14:22
- Excel(エクセル) Excleマクロ セル値の代入と文字列の結合について 3 2022/10/05 16:47
- Visual Basic(VBA) EXCEL VBA ユーザーフォームの内容をループでデータベースに登録したい。 2 2023/02/02 10:22
- Visual Basic(VBA) Excelで横書き50行の漢字テストデータを縦書きのテスト問題にしたい。 6 2022/04/27 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1MBでドレくらいの文章を書くこ...
-
スペイン語で「i」や「o」の上...
-
イラストレーターで、文字ツー...
-
ペイントでのテキスト修正
-
テキスト型は何故255文字ま...
-
ペイントでテキストを入れると...
-
タイプライターの打ち間違い処...
-
作ったマクロを複数のシートで...
-
Lotsu Notes7 同一文章内リン...
-
Excel csvから開くと上限文字数...
-
GIMPでの一括編集
-
マル秘マークを入れたい
-
Illustratorで、文字を下部分で...
-
【Excel関数】先頭の文字だけを...
-
ラテン文字(aなどの上に点が二...
-
フォトショップで、スキャナ取...
-
webでのファイル名の文字数につ...
-
ドキュワークス文書にて、フリ...
-
【花子】立体の面の文字を立体...
-
10分間で1200文字打てる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1MBでドレくらいの文章を書くこ...
-
ワードの行✖️文字数について。 ...
-
エクセルで入力してある文を別...
-
スペイン語で「i」や「o」の上...
-
Notionが、テーブルビューを一...
-
文字を縦書きにしていたら、斜...
-
作ったマクロを複数のシートで...
-
ペイントでのテキスト修正
-
Excel csvから開くと上限文字数...
-
イラストレーターで、文字ツー...
-
ラテン文字(aなどの上に点が二...
-
英文の字下げ、について
-
マル秘マークを入れたい
-
42×34ってことは最大1428文字っ...
-
テキスト型は何故255文字ま...
-
TeraPadで環境依存文字を入力す...
-
ペイントでテキストを入れると...
-
フォトショップで、スキャナ取...
-
イラストレイターでの文字間隔
-
word初心者です 助けてください...
おすすめ情報