回答編集履歴

1

質問を誤解していたので修正

2023/05/15 10:38

投稿

otn
otn

スコア84633

test CHANGED
@@ -1,19 +1,22 @@
1
+ # 質問を誤解していたので修正
1
2
  ```VBA
2
3
  a = セルの値
3
4
  b = ""
4
5
  Do While a <> b
5
6
  b = a
6
- a = Replace(b, vbLf + vbLf, vbLf)
7
+ a = Replace(b, vbLf + vbLf + vbLf, vbLf+ vbLf)
7
8
  Loop
9
+ Buf = Split(a, vbLf & vbLf)
8
10
  ```
9
- で、複数の改行が1つになるので、それからsplitします。
11
+ で、3つ以上の改行が2つになるので、それから改行2つで`split`します。
12
+
10
13
  あるいは、正規表現の置換を使うか。
11
14
  ```VBA
12
15
  a = セルの値
13
16
  Set RE = CreateObject("VBScript.RegExp")
14
- RE.Pattern = vbLf & "+"
17
+ RE.Pattern = vbLf & "{3,}"
15
18
  RE.Global = True
16
- b = RE.Replace(a, vbLf)
19
+ Buf = Split(RE.Replace(a, vbLf+vbLf), vbLf & vbLf)
17
20
  ```
18
21
  vbLFの連続だけでなく、途中に空白だけの行があり、それもまとめたい場合は同様の方法で出来るかと思います。
19
22