- ベストアンサー
VBAで文字列の切り取り方法
- VBAを使用して、1つのセルからスペースで区切られた文字列を切り取る方法について説明します。
- 上記の例の場合、セルに貼り付けられた文字列を各要素に分割するために、正規表現を使用することがおすすめです。
- この方法を使用すると、任意の文字列をスペースで区切って切り出すことができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>別シートへの切り出しはこんなんでよろしいのでしょうか? こんなカンジでいいんじゃないでしょうか。 sub macro3() worksheets("Sheet1").range("A:A").copy _ destination:=worksheets("Sheet2").range("A1") worksheets("Sheet2").range("A:A").texttocolumns _ destination:=range("A1"), _ datatype:=xldelimited, _ consecutivedelimiter:=true, _ space:=true end sub #つまり 追加のご質問はコピーがしたいということのようですから,参考にしてください。 #それと 違うことをやりたくなったのでしたら,まず最初のご相談は解決で閉じてから,また新しいご相談として投稿し直してください。 #オマケ 大奮発です。 sub macro4() dim i as long dim a as variant on error resume next for i = 1 to 3 a = split(application.trim(worksheets("Sheet1").cells(i, 1)), " ") worksheets("Sheet2").cells(i, "A").resize(1, ubound(a) + 1) = a next i end sub
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
方法1) データメニュー(データタブ)の「区切り位置」を使い,「カンマやタブで区切られた…」から「スペース」にチェックを入れて文字列を切断する という操作を新しいマクロの記録でマクロに録って,活用してみてください。 方法2) sub macro2() dim h as range dim a as variant for each h in range("A1:A3") a = split(application.trim(h), " ") h.offset(0, 1).resize(1, ubound(a) + 1) = a next end sub #対象範囲(A1:A3)の取得はご質問の本筋じゃないので割愛しています
お礼
ありがとうございます。 いろいろやってみたのですが、別シートへの切り出しはこんなんで よろしいのでしょうか?(なんか非効率のような気がするのですが) Sub macro2() Dim h As Range Dim a As Variant For Each h In Range("A1:A3") a = Split(Application.Trim(h), " ") h.Offset(0, 1).Resize(1, UBound(a) + 1) = a Next Worksheets("Sheet2").Range("A1:IV65536").NumberFormat = "@" Worksheets("Sheet1").Range("B1:IV65536").Copy Destination:=Worksheets("Sheet2").Range("A1:IV65536") End Sub
- bin-chan
- ベストアンサー率33% (1403/4213)
例示のデータがセルA1・A2・A3として。 セルB1に式[=trim(a1)]を設定、それをセルB2・B3にコピー。 その上で、式の結果をコピーして、形式を選択して貼り付け>値 でペースト。 その結果(値)を、区切り位置を指定する>スペース で列に分割。 でどうでしょう?
お礼
ありがとうございます。 セル単位で「区切り位置を指定する」コマンドの存在を知りません でしたので参考になりました。
お礼
ありがとうございます。 sub macro4() が理解できましたのでこちらを活用させて頂きます。 追加質問の件は以後気をつけます。 ご指摘ありがとうございました。