Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8236 / 13644 ツリー ←次へ | 前へ→

【34464】セルの中身を分割して別のセルに割り付ける方法 うさ 06/2/3(金) 9:57 質問[未読]
【34465】Re:セルの中身を分割して別のセルに割り付... G-Luck 06/2/3(金) 10:32 回答[未読]
【34480】Re:セルの中身を分割して別のセルに割り付... Kein 06/2/3(金) 13:36 回答[未読]

【34464】セルの中身を分割して別のセルに割り付け...
質問  うさ  - 06/2/3(金) 9:57 -

引用なし
パスワード
   下記のようなデータがひとつのセルに入っているとして、

aaa  :あいうえお
bbbbbb :かきくけこさし。すせそ。
cc  :123

これを、aはa、bはb、cはc、と別の列(同じ行)に割り付けなおしたいのです。
アルファベットの部分が項目名、":"以下が別のセルに移し変えたい本文です。
なお、このパターンのデータは何行にも渡って入っていますが、どのセルも項目数や":"の後から本文が記述され、改行まで本文が続くという形式は同じです。

イメージとしてはセルの中の文字列を左から見ていって、
":"を見つけたらその次の文字からその次の改行文字の1つ手前までをセルの内容を配列に入れなおし、
その配列の要素をセルにsetし直す、ということをVBAで記述すればいいのだとは思っているのですが、実は配列の使い方がまるでピンときていなくて、マニュアルやリファレンスを見ても参考になる例が見つけられないのです。

同じような質問が過去にあったらすいませんが、よろしくご教示お願いいたします。

【34465】Re:セルの中身を分割して別のセルに割り...
回答  G-Luck  - 06/2/3(金) 10:32 -

引用なし
パスワード
   うさ さん こんにちわ

数式ではだめですか?
A1にデータが入っているとして、

=MID(A1,1,FIND(":",A1,1)-1)
=MID(A1,FIND(":",A1,1)+1,LEN(A1))

でどうでしょう? 

【34480】Re:セルの中身を分割して別のセルに割り...
回答  Kein  - 06/2/3(金) 13:36 -

引用なし
パスワード
   仮にA列にそのデータが入力されているとして、B列以降に分割入力していくなら

Sub Test_Split()
  Dim C As Range
  Dim MyV As Variant
  Dim i As Integer

  For Each C In Range("A1", Range("A65536").End(xlUp)).SpecialCells(2)
   If InStr(1, C.Value, Chr(10)) > 0 Then
     MyV = Split(C.Value, Chr(10))
     For i = LBound(MyV) To UBound(MyV)
      C.Offset(, i + 1).Value = Split(MyV(i), ":")(1)
     Next i
   Else
     C.Offset(, 1).Value = Split(C.Value, ":")(1)
   End If
  Next
End Sub  

8236 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free