• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定の文字列の後の数値を加算)

特定の文字列の後の数値を加算する方法をご教授ください

このQ&Aのポイント
  • エクセル(マクロ?)で、特定の一部の数値のみを1ずつ加算する方法を教えてください。
  • 元々テキストから持ってきた文字列の一部の数値だけを1ずつ加算したいです。
  • 特定の文字列の後の数値を簡単に1ずつ増やす方法を教えてください。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 関数でも可能です。  今仮に、元の文字列がSheet1のA列に入力されていて、Sheet3のA列~D列を作業列として使用して、Sheet2のA列に結果を表示させるものとします。  まず、Sheet3のA1セルに次の数式を入力して下さい。 =IF(SUMPRODUCT(ISNUMBER(RIGHT(LEFT(Sheet1!$A1,FIND(" ",ASC(Sheet1!$A1))-1),ROW(INDIRECT("Z1:Z"&FIND(" ",ASC(Sheet1!$A1))-1)))+0)*1),SUMPRODUCT(ISNUMBER(RIGHT(LEFT(Sheet1!$A1,FIND(" ",ASC(Sheet1!$A1))-1),ROW(INDIRECT("Z1:Z"&FIND(" ",ASC(Sheet1!$A1))-1)))+0)*1),"")  次に、Sheet3のB1セルに次の数式を入力して下さい。 =IF($A1="","",LEFT(Sheet1!$A1,FIND(" ",ASC(Sheet1!$A1))-1-$A1))  次に、Sheet3のC1セルに次の数式を入力して下さい。 =IF($A1="","",MID(Sheet1!$A1,FIND(" ",ASC(Sheet1!$A1))-$A1,$A1)+0)  次に、Sheet3のD1セルに次の数式を入力して下さい。 =IF($A1="","",REPLACE(Sheet1!$A1,1,FIND(" ",ASC(Sheet1!$A1))-1,))  次に、Sheet3のA1~D1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。  次に、Sheet2のA1セルに次の数式を入力して下さい。 =IF(COUNT(Sheet3!$A:$A),IF(MOD(ROWS($1:1),MATCH(99,Sheet3!$A:$A)+1),INDEX(Sheet3!$B:$B,MOD(ROWS($1:1),MATCH(99,Sheet3!$A:$A)+1))&INDEX(Sheet3!$C:$C,MOD(ROWS($1:1),MATCH(99,Sheet3!$A:$A)+1))+ROUNDUP(ROWS($1:1)/(MATCH(99,Sheet3!$A:$A)+1),0)&INDEX(Sheet3!$D:$D,MOD(ROWS($1:1),MATCH(99,Sheet3!$A:$A)+1)),""),"")  次に、Sheet2のA1セルをコピーして、Sheet2のA2以下に貼り付けて下さい。  以上です。

pompom_ope
質問者

お礼

詳細なご説明に加え、実行画像まで添付頂きありがとうございました。 頂いた内容で近々試してみます!

その他の回答 (1)

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

ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける Public Function getnum(ByVal target As Excel.Range) As Variant  Dim a  Dim s  Dim i ’スペースの確認  If InStr(target(1), " ") > 0 Then   s = " "  Else   s = " "  End If ’取り出して計算  a = Split(target(1), s)  For i = Len(a(0)) To 1 Step -1   If Not IsNumeric(Mid(a(0), i, 1)) Then Exit For  Next i  a(0) = Left(a(0), i) & (0 & Mid(a(0), i + 1, 99)) + 1  getnum = Join(a, s) End Function ファイルメニューから終了してエクセルに戻る KKKKKKKKKKKKKKKK12 360X JJJJJJJJJJJJJJJJJJJ12 666Y LLLLLLLLLLLLLLLLLLL12 999M のような文字列がたとえばA1:A3に入っていたとすると,続きのA4に =getnum(A1) と数式を入れ,下向けに必要なだけつらつらっとコピー貼り付ける。 必要に応じてコピーしてその場で形式を選んで値のみ貼り付け,値化する。 #参考 ご質問の例示では「KK13」と「360X」の間が「全角のスペース」になっていますが,これがホントに正しくて,間違いなくそれしか挟まってない(たまに半角のスペースとかになっていることは無い)なら,もう少し簡単なマクロになります。 #参考 後ろにくっついている「999M」とかの文字数が例示のように本当に固定なら,もっと簡単になります。 #参考 例示ではナントナク「KKKKK」みたいに書いてますが,この途中に数字とか出てくる可能性がホントに無いのか,寄せられる回答も含めて確認が必要かもしれません。 こういった留意点が沢山出てくるのは,ひとえにアナタの例示がアバウトすぎるからだという見方も出来ます。支障のない範囲で「こういうデータです」ってのを,出来るだけ本番データをコピーして実地に沿って提示するように心がけてみてください。

pompom_ope
質問者

お礼

ありがとうございました

関連するQ&A

専門家に質問してみよう