こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Excel2007のマクロで文字列を分解

Excel2007のマクロで文字列を分解したいのですがうまくいきません。
1、セルA1からU1までかそれ以上にデータが3つずつ入ってます。

2、1のデータの1つずつをを3列ずつに分解してA3から列上にコピー。

例えば、セルA1あいう、セルB1えおか→ならA3あ、B3い、C3う、D3え、E3お、F3か

という具合に。だれかお願いします。

投稿日時 - 2018-05-21 17:04:23

QNo.9500568

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2018-05-22 20:35:33

補足

すみません私がミスしてました。

投稿日時 - 2018-05-22 21:06:13

お礼

コンパイルエラーが出てFOR EACHに指定する変数はバリアント型またはオブジェクト型でなければなりません、と出ます。

投稿日時 - 2018-05-22 21:02:47

ANo.3

>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

投稿日時 - 2018-05-22 19:48:08

補足

なんどもすみませんが、1004と出て配列の一部を変更できません、となります。何がいけないのでしょうか。

投稿日時 - 2018-05-22 21:14:27

お礼

1004、charactersクラスのTEXTプロパティを取得できません、とエラーが出ます。もしかしてこのプログラムは回りに何も無い状態(M29からS29の)ではないとダメだったりしますか?

投稿日時 - 2018-05-22 20:12:43

ANo.2

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文字一律でなくても、変更点無し。

投稿日時 - 2018-05-21 22:02:18

お礼

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

投稿日時 - 2018-05-22 22:01:57

ANo.1

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

投稿日時 - 2018-05-21 17:31:50

お礼

この通りでは動きました。ありがとうございます。
ところがお題のセルを変えるとエラーになってしまいました。
セルA1からU1以上、のところをM29からS29以上に変えたら失敗しました。IN range("A1",……)のところをM29に変えただけなんです。
ご教授お願いします。

投稿日時 - 2018-05-22 19:24:54

あなたにオススメの質問