• ベストアンサー

エクセル:区切り位置機能のようなマクロ

お世話になります。 エクセルの区切り位置機能の「スペース」で区切った時と同じ結果をだせるマクロは組めるでしょうか?(区切り位置機能を使わずに) 区切り位置機能を使うと、その後も区切りたくたい場面でも勝手にデータが区切られたりします。また、できれば区切る前のデータを残したまま、その右の列に「スペース」単位で区切ったデータが入っていくのが理想です。 例) B2セルに 123 AB B3セルに 345 VA BBB  のデータ入っていた場合、 B2,B3セルは元データのままで、C2:123 D2:AB C3:345 D3:VA E3:BBB となればOK。 実際は2行ではないので選択した範囲で実行できるのが理想的です。 アドバイスお願いします。

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

  • ベストアンサー
  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.2

こんな感じでしょうか。 動作の概要  選択している範囲の個々のセルについて、  入力されている文字列を半角スペースで分割し、  それぞれの要素を、そのセルの右隣から右方にセットする。  ※セットするセルに既にデータがある場合は上書きされますのでご注意ください。 '---------------------↓ ココカラ ↓--------------------- 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で動作確認。以上ご参考まで。

HGK
質問者

お礼

ありがとうございました。 期待通りの動きをしてくれました。

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

B列のデータをC列にコピペしてから、データの区切りをすればいいのでは? B列は区切りたくなく、B列のデータをC列以降にスペースで区切ればいい、 と言う解釈での回答ですけど。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

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」を返します。

HGK
質問者

お礼

ありがとうございました。

関連するQ&A