アプリ版:「スタンプのみでお礼する」機能のリリースについて

前回の質問の仕方が悪かったようなので、再投稿致します。

図のA列の様に1つのセル内にAlt+Enterで改行された複数行のデータがあり、同一セル内のそれぞれの行の右から2番目の数値の和を、B列に出力したいのです。

図で言うと
A1セル内は、それぞれ右から2番目の文字は2,3,5なので、その和をB1に
A2セル内も同様に、それぞれ4,8,2なので、その和をB2に
出力したのです。

「【再】セル内の右から2文字の値を取得して」の質問画像

A 回答 (5件)

そんなお話とはつゆ知らず。



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))
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/09/12 21:06

関数でやるのは、関数熟練者のひらめきが必要なように思う。

其れで
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
c9d19
ーーー
c9a9
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/09/12 21:05

◆tom04 さんの考え方の関数案です


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

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

お礼日時:2011/09/12 21:06

◆こんな方法はいかがでしょう(10行まで可能です)


B1=SUMPRODUCT((0&LEFT(RIGHT(TRIM(MID(SUBSTITUTE(A1,CHAR(10),REPT(" ",100)),ROW($1:$10)*100-99,100)),2)))*1)
★下にコピー
「【再】セル内の右から2文字の値を取得して」の回答画像3
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/09/12 21:06

こんばんは!


各セルは改行されている訳ですね?

質問のように各行の最後から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
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/09/12 21:06

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