• ベストアンサー

エクセル(2000)のセルから指定桁数を抽出(VBAor関数)

すみません!先程質問を入れたものですが、 少し変更が・・・(ちょっとあせってます・・・) セルにあるデータの文字列を後ろから数えて、スペースが見つかったら、その桁数以降のデータのみを別のセルに書きだしたいのですが、 例えば・・・ A1に「あいうえおかきくけこ_______12345」 を B2に「12345」 を書き出したい。 条件として・・・ データのあるセルの行数は、1000~2000行 Win2000、Office2000 よろしくお願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

こんにちは。 問題のセルを全て選択してから実行します。 必ずテスト環境で試して下さい。 A1~A1000を選択するとB1~B1000に書き出します。 Sub Test() Dim r As Range, buf As Integer, i As Integer For Each r In Selection  buf = Len(r.Text)  If (r.Text Like "* *") Or (r.Text Like "* *") Then   For i = buf To 1 Step -1    If (Mid(r.Text, i, 1) = " ") Or _      (Mid(r.Text, i, 1) = " ") Then     r.Offset(0, 1) = Right(r.Text, Len(r.Text) - i)     Exit For    End If   Next i  End If Next r End Sub

rurucom
質問者

お礼

papayukaさん!いつも、ありがとうございます。 おかげさまで、今日のうちに帰れそうです。本当に助かりました。 ありがとうございました。

その他の回答 (3)

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

皆さんのご回答は長いので、短いやつを考えました。 (仮定)A1に全角で、スペースを中に含む文字列を    入力する。半角文字の時は同じで良いと思う。    両方混じる時は「FINDB」「MIDB」など    で対処可能と思う(未テスト)。 (1)B1に「=FIND(””、A1)」をいれる。    ” ”の中は全角スペースにする。    全体が半角の時は半角スペースとする。 (2)C1に「=TRIM(MID(A1,B1,LEN(A1)-B1+1))」を   入れる。 (3)中間のB1をなくすには   「=TRIM(MID(A1,FIND(" ",A1),LEN(A1)-FIND (" ",A1)+1))」をB1に入れれば良い。

rurucom
質問者

お礼

imogasiさん!ありがとうございます。 #2にて処理してしまいました。imogasiさんの回答が簡単そうですね!明日にでも試してみます。 ありがとうございました。

  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.3

スペースが1ヶ所に複数個あるのか、複数の位置に複数個あるのか、どちらかわからない(質問の例にある"あいうえおかきくけこ"の部分にもスペースが入っているとFIND関数ではスペースの位置が特定できない)ので、RIGHTS("文字列")というユーザー定義関数にしてみました。 セルB1に =RIGHTS(A1) です。 Function RIGHTS(str As String) As String Dim retstr As String Dim count As Long count = Len(str) Do While 0 <= count If Mid(str, count, 1) = " " Or Mid(str, count, 1) = " " Then retstr = Right(str, Len(str) - count) count = 0 End If count = count - 1 Loop RIGHTS = retstr End Function (このサイトの解答欄はインデントが使えないので、少々見難いですが)

rurucom
質問者

お礼

deadline!ありがとうございました。 すみません!#2にて処理してしまいした。 でも、本当にありがとうございました。明日にでもこの構文も試して見ます。

  • t_amano
  • ベストアンサー率42% (16/38)
回答No.1

質問のようにA1に文字列があるとすると B1の内容は=MID(TRIM(A1),FIND(" ",TRIM(A1),1)+1,20) となります。最後の20は抜き取りたい大き目の文字数を入れてください。内容としてはスペースを1つにしてそのスペースの位置を検索、そのスペースの右から文字を抜き取ります。文字数をカウントしてright(,)なら20は考えなくてもいいけどかえって関数が長くなるのでやめました。 参考にしてください。

rurucom
質問者

補足

早速の回答ありがとうございます。 しかしながら、実は「あいうえお_かきく」のように前のほうに別のスペースがある場合があります。 右から数えて最初のスペースを検索して、その結果から右側を取り出したいです。 すみません!説明が足らなくて・・・よろしくお願いします。

関連するQ&A

専門家に質問してみよう