遅刻の「言い訳」選手権

添付画像のように、数字/記号/文字/改行が混在しているセルから数字のみを抽出し、別セルへ合計値を算出する方法を教えてください。

よろしくお願いいたします。

「Excelでセル内の数値のみ抽出し、合計」の質問画像

A 回答 (4件)

こんにちは!



https://oshiete.goo.ne.jp/qa/11683392.html
  ↑のサイトの関連質問ですね。

上記サイトは文字列として連結していましたが、
今回は単に足し算すれば大丈夫だと思います。
今回もA列1行目からデータがあり、C列に表示するとします。

Sub Sample2()
 Dim i As Long, k As Long
 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
      Cells(i, "C") = Cells(i, "C") + myAry(k)
     End If
    Next k
  Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

こんにちは。

また助けていただきありがとうございます。

想定通りの結果で尚且つ一番回答が早かったためベストアンサーとさせていただきます。
ありがとうございました。

お礼日時:2020/06/05 15:03

こんにちは



「セル内改行で分割して、数値の行のみを合計する」という意味と解釈しました。
ユーザ定義関数にしておくのが便利かもしれません。

ご例示の場合であれば、C2セルに
 =addvalue(A1)
と入力して下方にフィルコピーすれば計算できるようになります。


事前準備として、VBAのエディタで標準モジュールに以下をコピペしておきます。

Function addValue(ByVal target As Range)
Dim ary, n As Integer
ary = Split(target.Text, vbLf)
addValue = 0
For n = LBound(ary) To UBound(ary)
If IsNumeric(ary(n)) Then addValue = addValue + ary(n)
Next n
End Function

※ 引数には単体セルを与えてください。(複数セル範囲の場合はエラー値を返します)
    • good
    • 1
この回答へのお礼

こんにちは。

こんなやり方もあるんですね。
試してみましたが想定通りの結果となりました!
ありがとうございました。

お礼日時:2020/06/05 15:04

#2失礼。


忘れてください。
    • good
    • 1

こんにちは、


VBAなら、、で 一例サンプルです。
Sub sample()
Dim mystr, cel, rng As Range
Dim i As Long, Ans As Long
  Set rng = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
  For Each cel In rng
   mystr = Split(cel, vbLf)
   For i = 0 To UBound(mystr)
    If IsNumeric(mystr(i)) Then
      Ans = Ans + mystr(i)
    End If
   Next
   cel.Offset(, 2) = Ans
   Ans = 0
  Next
End Sub
    • good
    • 1
この回答へのお礼

こんにちは。

試してみたところ想定通りの結果となりました。
ご検討いただきありがとうございました。

お礼日時:2020/06/05 15:10

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報