• ベストアンサー

【再】セル内の右から2文字の値を取得して足したい。

前回の質問の仕方が悪かったようなので、再投稿致します。 図のA列の様に1つのセル内にAlt+Enterで改行された複数行のデータがあり、同一セル内のそれぞれの行の右から2番目の数値の和を、B列に出力したいのです。 図で言うと A1セル内は、それぞれ右から2番目の文字は2,3,5なので、その和をB1に A2セル内も同様に、それぞれ4,8,2なので、その和をB2に 出力したのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

そんなお話とはつゆ知らず。 A1に暫定的に10行までがあるとすると =SUMPRODUCT(0+MID(A1&CHAR(10)&REPT("00"&CHAR(10),10),FIND("\\\",SUBSTITUTE(A1&CHAR(10)&REPT("00"&CHAR(10),10),CHAR(10),"\\\",ROW($A$1:$A$10)))-2,1))

noname#146604
質問者

お礼

ご回答ありがとうございました。

その他の回答 (4)

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

関数でやるのは、関数熟練者のひらめきが必要なように思う。其れで 1つの方法として、ユーザー関数(VBA)を作る方法もある。こちらは常識的な方法。 標準モジュールに Function ssum(a) s = Split(a, Chr(10)) 'Chr(10)で分離 sm = 0 '-- For i = 0 To UBound(s) sm = sm + Val(Mid(s(i), Len(s(i)) - 1, 1)) '最後から2文字目を数値化して加える Next i ssum = sm End Function ーー シートのB1に =ssum(A1) 下方向に式を複写する。 例データ ーーー aaa3s bbbbc5D xx6s  14 ーーー a4s bb6c c9d 19 ーーー c9a 9

noname#146604
質問者

お礼

ご回答ありがとうございました。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

◆tom04 さんの考え方の関数案です >質問のように各行の最後から2文字目という考え方ではなく、最初から一文字ずつ舐めるように検索し 数字であればそれをプラスするようにしています。 >尚、数字は1行に一つしかなく、必ず一桁という前提です ◆文字数は100文字までです =SUMPRODUCT(MID(0&A1,ISNUMBER(-MID(A1,ROW($1:$100),1))*ROW($1:$100)+1,1)*1) ★下にコピー

noname#146604
質問者

お礼

ご回答ありがとうございました。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

◆こんな方法はいかがでしょう(10行まで可能です) B1=SUMPRODUCT((0&LEFT(RIGHT(TRIM(MID(SUBSTITUTE(A1,CHAR(10),REPT(" ",100)),ROW($1:$10)*100-99,100)),2)))*1) ★下にコピー

noname#146604
質問者

お礼

ご回答ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 各セルは改行されている訳ですね? 質問のように各行の最後から2文字目という考え方ではなく、最初から一文字ずつ舐めるように検索し 数字であればそれをプラスするようにしています。 尚、数字は1行に一つしかなく、必ず一桁という前提です。 VBAの一例です。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim vl1, vl2 As Variant For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row vl2 = 0 For j = 1 To Len(Cells(i, 1)) vl1 = StrConv(Mid(Cells(i, 1), j, 1), vbNarrow) If vl1 Like "[0-9]" Then vl2 = vl2 + vl1 End If Next j Cells(i, 2) = vl2 Next i End Sub 'この行まで 他に良い方法があればごめんなさいね。m(__)m

noname#146604
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

専門家に質問してみよう