プロが教えるわが家の防犯対策術!

添付画像のように、セル内の文字列から改行を維持したまま数値以外の値を削除する方法を教えてください。

希望① 記号(-や+など)を削除したい
希望② 文字を削除したい
希望③ 改行を削除したい

よろしくお願いします。

「Excelで改行を維持しつつ数値以外の値」の質問画像

A 回答 (2件)

こんばんは!



なかなか回答がつかないようなので、
VBAでやってみました。
↓の画像のように元データはA列1行目からあり、C列に表示するとします。

Sub Sample1()
 Dim i As Long, k As Long, cnt As Long
 Dim myStr As String
 Dim myAry
  For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
   myAry = Split(Cells(i, "A"), vbLf)
    For k = 0 To UBound(myAry)
     If IsNumeric(myAry(k)) Then
      myStr = myStr & vbCrLf & myAry(k)
     End If
    Next k
     With Cells(i, "C")
      .Value = myStr
      cnt = Len(Cells(i, "A")) - Len(.Value)
       If cnt > 0 Then
        .Value = WorksheetFunction.Rept(vbCrLf, cnt) & .Value
       End If
     End With
    myStr = ""
  Next i
End Sub

※ 上記マクロを実行すると
画像のような感じになります。m(_ _)m
「Excelで改行を維持しつつ数値以外の値」の回答画像1
    • good
    • 1
この回答へのお礼

こんにちは。

回答していただきありがとうございます。

上記のマクロで想定通りの結果が得られました。
ありがとうございました。

お礼日時:2020/06/05 11:46

No.1です。



細かい検証をしていませんでした。
前回のコードは消去し↓のコードに変更してください。

Sub Sample2()
 Dim i As Long, k As Long, cnt As Long
 Dim myStr As String
 Dim myAry
  For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
   myAry = Split(Cells(i, "A"), vbLf)
    For k = 0 To UBound(myAry)
     If IsNumeric(myAry(k)) Then
      myStr = myStr & myAry(k) & vbCrLf
     End If
    Next k
     myStr = Left(myStr, Len(myStr) - 1)
     With Cells(i, "C")
      .Value = myStr
      .VerticalAlignment = xlBottom
      .HorizontalAlignment = xlCenter '//★//
     End With
    myStr = ""
  Next i
End Sub

※ 中央揃えが不要ならコード内の「★」の行を消してください。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!