- 締切済み
Excel2007のマクロで文字列を分解
Excel2007のマクロで文字列を分解したいのですがうまくいきません。 1、セルA1からU1までかそれ以上にデータが3つずつ入ってます。 2、1のデータの1つずつをを3列ずつに分解してA3から列上にコピー。 例えば、セルA1あいう、セルB1えおか→ならA3あ、B3い、C3う、D3え、E3お、F3か という具合に。だれかお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- watabe007
- ベストアンサー率62% (476/760)
M29:S29範囲、固定になりますが Sub Test3() Dim c As Range, i As Long, j As Long For Each c In Range("M29:S29") For i = 1 To 3 j = j + 1 Cells(3, j).Value = Mid(c.Value, i, 1) Next Next End Sub
- watabe007
- ベストアンサー率62% (476/760)
>M29からS29以上に変えたら かつ、上記セルに >データが3つずつ入ってます。 なら Sub Test2() Dim c As Range, i As Long, j As Long For Each c In Range("M29", Cells(29, Columns.Count).End(xlToLeft)) For i = 1 To 3 j = j + 1 Cells(3, j).Value = c.Characters(i, 1).Text Next Next End Sub
お礼
1004、charactersクラスのTEXTプロパティを取得できません、とエラーが出ます。もしかしてこのプログラムは回りに何も無い状態(M29からS29の)ではないとダメだったりしますか?
補足
なんどもすみませんが、1004と出て配列の一部を変更できません、となります。何がいけないのでしょうか。
- imogasi
- ベストアンサー率27% (4737/17069)
A1:C1セルに あいう えおか きくけ と入っているとする。 標準モジュールに Sub test01() Dim str As String Dim i As Long k = 1 For Each cl In Range("A1:C1") str = cl.Value MsgBox Len(str) For i = 1 To Len(str) Cells(3, k) = Mid(str, i, 1) k = k + 1 Next i Next End Sub 実行して A3:I3に あ い う え お か き く け 似たようなWEB記事がある。 ーー http://www.relief.jp/docs/017921.html Mid関数の応用でしかない問題では? 1セル3文字一律でなくても、変更点無し。
お礼
ありがとうございました。
- watabe007
- ベストアンサー率62% (476/760)
Sub Test() Dim c As Range, i As Long, j As Long For Each c In Range("A1", Cells(1, Columns.Count).End(xlToLeft)) For i = 1 To c.Characters.Count j = j + 1 Cells(3, j).Value = c.Characters(i, 1).Text Next Next End Sub
お礼
この通りでは動きました。ありがとうございます。 ところがお題のセルを変えるとエラーになってしまいました。 セルA1からU1以上、のところをM29からS29以上に変えたら失敗しました。IN range("A1",……)のところをM29に変えただけなんです。 ご教授お願いします。
お礼
コンパイルエラーが出てFOR EACHに指定する変数はバリアント型またはオブジェクト型でなければなりません、と出ます。
補足
すみません私がミスしてました。