- ベストアンサー
【再】セル内の右から2文字の値を取得して足したい。
- みんなの回答 (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))
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
関数でやるのは、関数熟練者のひらめきが必要なように思う。其れで 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
お礼
ご回答ありがとうございました。
- maron--5
- ベストアンサー率36% (321/877)
◆tom04 さんの考え方の関数案です >質問のように各行の最後から2文字目という考え方ではなく、最初から一文字ずつ舐めるように検索し 数字であればそれをプラスするようにしています。 >尚、数字は1行に一つしかなく、必ず一桁という前提です ◆文字数は100文字までです =SUMPRODUCT(MID(0&A1,ISNUMBER(-MID(A1,ROW($1:$100),1))*ROW($1:$100)+1,1)*1) ★下にコピー
お礼
ご回答ありがとうございました。
- maron--5
- ベストアンサー率36% (321/877)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 各セルは改行されている訳ですね? 質問のように各行の最後から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
お礼
ご回答ありがとうございました。
お礼
ご回答ありがとうございました。