- ベストアンサー
エクセル:区切り位置機能のようなマクロ
お世話になります。 エクセルの区切り位置機能の「スペース」で区切った時と同じ結果をだせるマクロは組めるでしょうか?(区切り位置機能を使わずに) 区切り位置機能を使うと、その後も区切りたくたい場面でも勝手にデータが区切られたりします。また、できれば区切る前のデータを残したまま、その右の列に「スペース」単位で区切ったデータが入っていくのが理想です。 例) B2セルに 123 AB B3セルに 345 VA BBB のデータ入っていた場合、 B2,B3セルは元データのままで、C2:123 D2:AB C3:345 D3:VA E3:BBB となればOK。 実際は2行ではないので選択した範囲で実行できるのが理想的です。 アドバイスお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうか。 動作の概要 選択している範囲の個々のセルについて、 入力されている文字列を半角スペースで分割し、 それぞれの要素を、そのセルの右隣から右方にセットする。 ※セットするセルに既にデータがある場合は上書きされますのでご注意ください。 '---------------------↓ ココカラ ↓--------------------- Sub Sample() Dim myCel As Range Dim myAry As Variant For Each myCel In Selection myAry = Split(myCel.Value, " ") myCel.Offset(0, 1).Resize(1, UBound(myAry) + 1) = myAry Next myCel End Sub '---------------------↑ ココマデ ↑--------------------- Excel2003で動作確認。以上ご参考まで。
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
B列のデータをC列にコピペしてから、データの区切りをすればいいのでは? B列は区切りたくなく、B列のデータをC列以降にスペースで区切ればいい、 と言う解釈での回答ですけど。
- hallo-2007
- ベストアンサー率41% (888/2115)
Split関数の事でしょうか。 以下は、 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/function/vba_string2.html より抜粋です。 使用例 Sub test() Dim myStr As String, myData Dim i As Integer myStr = "A,B,C,B,E" myData = Split(myStr, ",") For i = 0 To UBound(myData) Cells(i + 1, 1).Value = myData(i) Next i End Sub A1:E1セルにそれぞれ「A」「B」「C」「D」「E」を返します。
お礼
ありがとうございました。
お礼
ありがとうございました。 期待通りの動きをしてくれました。