• 締切済み

エクセルで英数字を合計するやり方

エクセルで小文字のアルファベットと数字が一緒に入っているセルの数字だけを合計するやり方を教えて下さい。 例えば、 a1b1c1 a1b1c1 上記のような2つのセルに英数字がある場合、 a2b2c2 となるように合計するやり方を知りたいです。

みんなの回答

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.4

a1b1c1 のように 1文字1数字1文字1数字1文字1数字 6桁限定でしたら =MID(A1,1,1)&VALUE(MID(A1,2,1))+VALUE(MID(A2,2,1)) &MID(A1,3,1)&VALUE(MID(A1,4,1))+VALUE(MID(A2,4,1))&MID(A1,5,1)&VALUE(MID(A1,6,1))+VALUE(MID(A2,6,1)) で、いけると思いますが、多分それはないような気がしますのでVBAで A1が abc2ffb11cfr19 A2が abc2ffb19cfr14 で(文字と数字の位置が一致していると) A3結果(文字はA1の文字) abc4ffb30cfr33 となるように Sub Test() Dim mAns As String Dim i As Long, tmp1 As Variant, tmp2 As Variant For i = 1 To Len(Range("A1").Value) tmp1 = Mid(Range("A1").Value, i, 1) tmp2 = Mid(Range("A2").Value, i, 1) If IsNumeric(tmp1) And IsNumeric(tmp2) Then If Len(CStr(Val(tmp1) + Val(tmp2))) = 2 _ And IsNumeric(Right(mAns, 1)) Then mAns = Left(mAns, Len(mAns) - 1) & _ CStr(Val(Right(mAns, 1) + 1)) & _ CStr((Val(tmp1) + Val(tmp2)) - 10) Else mAns = mAns & CStr(Val(tmp1) + Val(tmp2)) End If Else mAns = mAns & tmp1 End If Next Range("A3").Value = mAns End Sub

afvjndio
質問者

お礼

回答ありがとうございます。 Excelの勉強を始めたばかりで、現時点では頂いた回答内容を理解できませんが、勉強した後にじっくりと読ませて頂きます。 お忙しい中、長文の回答ありがとうございました。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

[No.1お礼]へのコメント、 斯樣なコメント、繰り返へさ無いでェ~! 私も貴方と大同小異の未熟なので、我々には不可能と云はざるを得ません、ハイ。m(_._)m

afvjndio
質問者

お礼

お忙しい中、再度回答頂きまして誠にありがとうございます。 頂いた回答はとても参考になりました。 ありがとうございました。<m(__)m>

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

関数利用では、すでに回答がでていますが、 興味がわいたので、すこし拡張してやってみた。 関数ではむつかしそうでVBA利用となり、正規表現の利用が避けられないと見た。 WEBに使えそうな記事があったので改造。 ーー 例データ A2;A4 <データ条件> ・数字は半角数字に統一されていること ・下記例での県名などは全行で文字と数字で、ペア―になって、そろっていること。  その数には制限はない。ほぼ、エクセル許容列数制限÷2 ・文字列部の文字数は制約はない。不揃いでもよい(東京2文字と神奈川3文字のように) 東京123神奈川56千葉98埼玉112 東京134神奈川76千葉131埼玉73 東京173神奈川91千葉72埼玉76 ーー 標準モジュールに Sub Sample5() Dim buf As String, RE, reMatch, reValue lr = Range("A10000").End(xlUp).Row '9999行以下とする MsgBox lr Set RE = CreateObject("VBScript.RegExp") '---文字部分 For i = 2 To lr buf = Cells(i, "A") With RE .Pattern = "[^0-9]+" .Global = True Set reMatch = .Execute(buf) c = 3 If reMatch.Count > 0 Then For Each reValue In reMatch Cells(i, c) = reValue c = c + 2 Next reValue End If End With Next i '----数字部分 For i = 2 To lr buf = Cells(i, "A") With RE .Pattern = "[0-9]+" .Global = True Set reMatch = .Execute(buf) c = 4 If reMatch.Count > 0 Then For Each reValue In reMatch Cells(i, c) = reValue c = c + 2 Next reValue End If End With Next i Set RE = Nothing End Sub ーーー 結果 同一シートのC列より右列に C列  D列  以右列は略 東京 123 神奈川 56 千葉 98 埼玉 112 東京 134 神奈川 76 千葉 131 埼玉 73 東京 173 神奈川 91 千葉 72 埼玉 76 ーー 最終目的の、合計(上記の県別の合計)は、最終行の直下行に出すとして、VBAでもできるが、関数で出すのは簡単なので略。

afvjndio
質問者

お礼

読み応えのある回答ありがとうございます。

afvjndio
質問者

補足

回答ありがとうございます。 Excelの勉強を始めたばかりで、現時点では頂いた回答内容を理解できませんが、勉強した後にじっくりと読ませて頂きます。 お忙しい中、長文の回答ありがとうございました。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.1

添附圖參照(Excel 2019) C3: =IF(SUM(C1:C2),SUM(C1:C2),C1) A3: =CONCAT(C3:H3)

afvjndio
質問者

お礼

ご親切に画像付きでの回答ありがとうございます。 未熟な質問で申し訳ございませんが、3つのセルで完結する事は不可能でしょうか? お手数ですが、回答頂ければ幸いです。

afvjndio
質問者

補足

ご親切に画像付きでの回答ありがとうございます。 未熟な質問で申し訳ございませんが、3つのセルで完結する事は不可能でしょうか?

関連するQ&A