- ベストアンサー
エクセル(2000)のセルから指定桁数を抽出(VBAor関数)
すみません!先程質問を入れたものですが、 少し変更が・・・(ちょっとあせってます・・・) セルにあるデータの文字列を後ろから数えて、スペースが見つかったら、その桁数以降のデータのみを別のセルに書きだしたいのですが、 例えば・・・ A1に「あいうえおかきくけこ_______12345」 を B2に「12345」 を書き出したい。 条件として・・・ データのあるセルの行数は、1000~2000行 Win2000、Office2000 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 問題のセルを全て選択してから実行します。 必ずテスト環境で試して下さい。 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
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
皆さんのご回答は長いので、短いやつを考えました。 (仮定)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に入れれば良い。
お礼
imogasiさん!ありがとうございます。 #2にて処理してしまいました。imogasiさんの回答が簡単そうですね!明日にでも試してみます。 ありがとうございました。
- deadline
- ベストアンサー率63% (1239/1943)
スペースが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 (このサイトの解答欄はインデントが使えないので、少々見難いですが)
お礼
deadline!ありがとうございました。 すみません!#2にて処理してしまいした。 でも、本当にありがとうございました。明日にでもこの構文も試して見ます。
- t_amano
- ベストアンサー率42% (16/38)
質問のようにA1に文字列があるとすると B1の内容は=MID(TRIM(A1),FIND(" ",TRIM(A1),1)+1,20) となります。最後の20は抜き取りたい大き目の文字数を入れてください。内容としてはスペースを1つにしてそのスペースの位置を検索、そのスペースの右から文字を抜き取ります。文字数をカウントしてright(,)なら20は考えなくてもいいけどかえって関数が長くなるのでやめました。 参考にしてください。
補足
早速の回答ありがとうございます。 しかしながら、実は「あいうえお_かきく」のように前のほうに別のスペースがある場合があります。 右から数えて最初のスペースを検索して、その結果から右側を取り出したいです。 すみません!説明が足らなくて・・・よろしくお願いします。
お礼
papayukaさん!いつも、ありがとうございます。 おかげさまで、今日のうちに帰れそうです。本当に助かりました。 ありがとうございました。