- 締切済み
Excel2007のマクロで文字列を分解
Excel2007のマクロで文字列を分解したいのですがうまくいきません。 1、セルA1からU1までかそれ以上にデータが3つずつ入ってます。 2、1のデータの1つずつをを3列ずつに分解してA3から列上にコピー。 例えば、セルA1あいう、セルB1えおか→ならA3あ、B3い、C3う、D3え、E3お、F3か という具合に。だれかお願いします。
- 961awaawa
- お礼率85% (391/460)
- Excel(エクセル)
- 回答数4
- ありがとう数4
- みんなの回答 (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/17068)
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に変えただけなんです。 ご教授お願いします。
関連するQ&A
- Excel2007のマクロで文字列を結合
Excel2007のマクロで文字列を結合したいのですがうまくいきません。 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- Excel2007のマクロで文字列を分解
Excel2007のマクロで文字列を分解したいのですがうまくいきません。 1、セルM29からAG29までかそれ以上にデータが3つずつ入ってます。 2、1のデータの1つずつをを3列ずつに分解してM31から列上にコピー。 例えば、セルM29あいう、セルN29えおか、…、→ならM31あ、N31い、O31う、P31え、Q31お、R31か、…。 という具合に。お願いいたします 画像を添付する
- ベストアンサー
- Excel(エクセル)
- Excel2007のVBAで文字列を結合
Excel2007のマクロで文字列を結合したいのですがうまくいきません。 下記がお題になります 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。
- ベストアンサー
- Excel(エクセル)
- <文字列マクロについて>
<文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、 指定した数だけ並べる あいうえお ←A1セルからE1まで5列(これは状況により変わる) ↓(マクロ実行:3行同じ数だけ並べるという指定) あ →A1セルから下にひたすら、同じ文字が続き順に並ぶ あ あ い い い う う →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい う え え え お お お ?規則的に並んだデータのまとまりをセットで移動する。 例だと5つの塊(これは変数とおきたい) あ A a い B b う C c え D d お E e ↓(マクロ実行) あ い う え お A B C D E ・ ・ ・ ・ a b c d e
- 締切済み
- その他MS Office製品
- エクセルでカンマ区切り文字を各行に分解するマクロを書きたい
WindowsXP Excel2003 エクセルで以下ができるマクロを書きたいです。 B列にはカンマ区切りで文字列が入っています。 カンマ区切りの数は行によって様々です。 この表をB列のカンマ区切り文字を各行に分解したいです。 その際、A列とC列は分解前の値と同様です。 このようなマクロは書けますかね? A列 B列 C列 あ a,b,c 100 い d,e 200 う f 300 え g,h 400 ↓ A列 B列 C列 あ a 100 あ b 100 あ c 100 い d 200 い e 200 う f 300 え g 400 え h 400
- ベストアンサー
- オフィス系ソフト
- 一つのセルの文字列を分解して別のシートへ
いつもお世話になっております。 一つのセルの文字列を分解して別のシートの指定したセルに一文字ずつ入力したいと考えています。 (例) A B C D E F ・・・・・・・・・・・ AD 1 2014/5/1 ・・・・ 2014/5/6・・・・・・・・・・・2014/5/31 2 3 こ 4 5 ど 6 7 も 8 9 の 別シートには、祝日の一覧が作成してあり、一つのセル"こどもの日"のように入力してあります。 F1のセルが2014/5/6なので、別シートの祝日データからデータをとばして、F3のセルに"こ"、一つ飛ばしてF5のセルに"ど"、F6のセルに"も"のように自動で入力したいのですが(他の祝日も同じく)、そういったことはマクロで可能でしょうか? よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- Excel2003 マクロで同じ文字列の行を消す
Excel2007からは重複したデータを消すことは出来ますが、同じ文字列を全部消す(ひとつものこらず)方法が無いか悩んでいます。 例えば、A1に「1234」 A2に「4231」 A3に「1234」がある場合、A1とA3どちらも削除したいです。 このような事が自動で出来るマクロをどのようにすれば作れるでしょうか? 私が考えているのは、 1)A列をソート 2)一つ前の行と比較して同じならどちらの行も消す (同じデータは、2つ以上ないです) という具合なのですが、2の部分の書き方が分かりません。
- ベストアンサー
- その他MS Office製品
- 【Excel VBA】データを集計する数式を入力するマクロ
Excel2003を使用しています。 A列 B列 C列 D列 E列 F列 1 9/1 20000 2 9/2 1000 3 9/10 5000 : : 10 9月計 ※1 ※2 11 12 13 10/1 10000 14 10/10 2000 15 10/14 4000 : : 20 10月計 ※3 ※4 上記のデータでいうと、 ※1(E10セル) =SUM(E1:E9) ※2(F10セル) =SUM(F1:F9) ※3(E20セル) =SUM(E13:E19) ※4(F20セル) =SUM(F13:F19) という内容の数式を入力するマクロを作成したく、数式を入力したいセルをアクティブにして、ボタン等に登録したマクロを実行すると数式が入力されるようにしたいと考えていますが、その際、集計範囲の最下行は、アクティブセルの1行上までになりますが、最上行をどのようにして取得すればよいかがわかりません。 (実際のデータは、もっと行数も入力されているデータ数も多いです) また、他にもこんな方法があるとか、こうしたほうが簡単とかあれば、教えていただけると勉強にもなりますので助かります。 うまく説明できなくて申し訳ありませんが、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 【マクロ】クリックすると空白を含む列を非表示に
上司にExcelのデータが見づらいと言われて困っています。 下記のようなマクロやVBAを教えていただけないでしょうか? 例えば、 A2のセルをクリックすると、その行(2行目)から空白セルを検索して、そのセルを含む列を非表示にして、データが入っている列だけを表するようなマクロってないでしょうか? (要は、C2とE2が空白セルのとき、A2をクリックして、A/B/D/F~の列だけ表示されるようになるマクロです。 同様に3行目でも、空白セルがB3、C3なら、A3をクリックした時、A/D/E…列だけ表示されて、B・C列が非常時になるような。) 似たような機能があれば、A2クリックでなく別にボタン等を作っても構いません。 ややこしくて、申し訳ございませんが、本当に困っているので、 どうかよろしくお願いいたします。
- 締切済み
- オフィス系ソフト
- EXCEL入力規則選択 → 文字表示 or 入力可
EXCEL2003で表を作成しています。 B列に入力規則を使い、「イ」または「ロ」が選べるようにリストを作ってあります。 B列(B3)のセルで 「イ」 を選ぶと、D列(D3)には「A」、E列(E3)には「0000」、F列「-」を表示させるようにし、B列(B3)のセルに 「ロ」 を選ぶと、D列(D3)、E列(E3)、F列(F3)に任意の文字を入力できるようにしたいのです。 以下、B4、B5、、、、と続いていっても、D4、E4、F4. D5、E5、F5・・・と対応していくような表にしたいのです。 関数でも、マクロでも何でもかまいません。できるだけ、簡単な方法を教えていただければと思います。よろしくお願いします。
- 締切済み
- オフィス系ソフト
お礼
コンパイルエラーが出てFOR EACHに指定する変数はバリアント型またはオブジェクト型でなければなりません、と出ます。
補足
すみません私がミスしてました。