• 締切済み

<文字列マクロについて>

<文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の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    

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

≪1≫と≪2≫を纏めてみました。 元のデータ範囲内のセルを選択しておいてからマクロを実行してください。 Dim drng As Range Dim n As Integer Dim i As Long If TypeName(Selection) <> "Range" Then Exit Sub If ActiveCell = "" Then Exit Sub n = 3 Set drng = ActiveCell.CurrentRegion With drng For i = 1 To .Columns.Count If .Rows.Count = 1 Then drng(1).Resize(n, 1).Offset((i - 1) * n).Value = drng(i).Value Else .Columns(1).Offset((i - 1) * .Rows.Count).Value = .Columns(i).Value End If Next i End With

noname#130090
noname#130090
回答No.2

文字列で考えるという何かの課題のようでしたので データ型をString と Variant の配列型でお答えします。 (1) Public Sub ans1()   Dim str As String   Dim cnt As Long   Dim i As Long   Dim j As Long   str = Range("A1")   cnt = InputBox("何回繰り返す?")   For i = 1 To Len(str)     For j = 1 To cnt       Range("A2").Offset(cnt * (i - 1) + j) = Mid(str, i, 1)     Next j   Next i End Sub (2) Public Sub ans2()   Dim str As Variant   Dim i As Long   For i = 0 To 4     str = Range("A1:A5").Offset(, i)     Range("A11:A15").Offset(i * 5) = str   Next End Sub (2)の str = Range("A1:A5").Offset(, i) は str(1)~str(5) に A1~A5 の値を1つずつ入れてます。 何セットの文字があるのか不明でしたので5回行っています。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

一例です。 ≪1≫ Dim drng As Range Dim i As Long Set drng = Range("A1:E1") For i = 1 To drng.Count Range("A1:A3").Offset((i - 1) * 3).Value = drng(i).Value Next i ≪2≫ Dim drng As Range Dim i As Long Set drng = Range("A1:E5") With drng For i = 1 To .Columns.Count .Columns(1).Offset((i - 1) * .Rows.Count).Value = .Columns(i).Value Next i End With

関連するQ&A

  • Excel2007のマクロで文字列を結合

    Excel2007のマクロで文字列を結合したいのですがうまくいきません。 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。

  • 【マクロ】クリックすると空白を含む列を非表示に

    上司にExcelのデータが見づらいと言われて困っています。 下記のようなマクロやVBAを教えていただけないでしょうか? 例えば、 A2のセルをクリックすると、その行(2行目)から空白セルを検索して、そのセルを含む列を非表示にして、データが入っている列だけを表するようなマクロってないでしょうか? (要は、C2とE2が空白セルのとき、A2をクリックして、A/B/D/F~の列だけ表示されるようになるマクロです。 同様に3行目でも、空白セルがB3、C3なら、A3をクリックした時、A/D/E…列だけ表示されて、B・C列が非常時になるような。) 似たような機能があれば、A2クリックでなく別にボタン等を作っても構いません。 ややこしくて、申し訳ございませんが、本当に困っているので、 どうかよろしくお願いいたします。

  • 文字列の数抽出、行挿入マクロ

    急きょ下記処理を実施することになったのですが、本やネットで下記処理ができるような マクロを色々探していもなかなか見つからず…。(T_T) どなたか詳しい方がいらっしゃいましたら教えていただけませんでしょうか? ・A列に特定の文字列(;)があった場合、その列をコピー。 ・その列の下に文字列(;)の数と同数の行を挿入。 ・挿入した行のAセルに、文字列(;)のすぐ後ろの1ケタを貼り付け。 ・(挿入行が2行の場合) さらに下に挿入した行のAセルに、左から2つ目の文字列(;)の  すぐ後ろの1ケタを貼り付け。 なお、A列の行数は、現時点で500行ほどあり、今後増える可能性もあります。 【処理する前】       A列      B列    C列 1行目  1;32     555   AAA 2行目  29;1;4   222   GGG 3行目  600      111   FFF 【マクロ実行後】       A列    B列   C列 1行目  1     555   AAA 2行目  32    555   AAA 3行目  29    222   GGG 4行目  1     222   GGG 5行目  4     222   GGG  6行目  600   111   FFF どうぞよろしくお願いいたします。

  • エクセルマクロ、空白行(セル)の挿入

    データがA、B、C、D、E列100行まであります。 このうちD、E列を除き、エクセルのマクロで1行ごとに空白で10行挿入したいです。 (A、B、C、D列のデータに空白セルを10行分挿入し、下にシフトするイメージ。D、E列はそのまま。) ご教授頂きたく、お願いします。

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

    Excel2007のマクロで文字列を分解したいのですがうまくいきません。 1、セルA1からU1までかそれ以上にデータが3つずつ入ってます。 2、1のデータの1つずつをを3列ずつに分解してA3から列上にコピー。 例えば、セルA1あいう、セルB1えおか→ならA3あ、B3い、C3う、D3え、E3お、F3か という具合に。だれかお願いします。

  • エクセルのマクロについて質問です。

    あセルを選択すると、その列の行を一番下まで書き出すようにしたいと思っています。 A1セル=ひらがな E2セル以降=書出し B列 ひらがな ←タイトル(B1セル) あいうえお かきくけこ さしすせそ C列 カタカナ←タイトル(C1セル) アイウエオ カキクケコ サシスセソ D列 英文字←タイトル(D1セル) abcd efgh ijkl 縦になっててちょっと見づらいですが、このような場合、A1の“ひらがな”というワードが入っていて、マクロを実行するとその下の行である “あいうえお” “かきくけこ” “さしすせそ” と、E2以降に表示するようにしたいのですが、どのように考えてコードにしたらいいのか分からないので教えていただけないでしょうか。

  • エクセル 文字列を分割するマクロについて

    1行目から200行目くらいまで、A列に次のようなデータが入っています。 (A1セル) A 1 A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S このデータを下記のようにカンマごとに別のセルに分割するマクロを 教えていただけないでしょうか。 A1に「A」を、S1に「S」を入れたいと思っています。  A B C ・・・ R S 1 A B C ・・・ R S

  • Excel2007のVBAで文字列を結合

    Excel2007のマクロで文字列を結合したいのですがうまくいきません。 下記がお題になります 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。

  • 一番初めに文字列が入っている列の文字列を知りたい

    次の条件で、よりA列に近い文字列を引っ張り出すにはどのような関数を使えば良いのでしょうか? 1)行の中にそれぞれ"文字列"が入っている 2)文字列が入っているセル数は行によって異なる   【A】 【B】 【C】 【D】 【E】 【1】りんご 【2】   ばなな 【3】   みかん りんご 【4】ばなな           みかん この回答を【F】列に示す場合、 【F1】はりんご、【F2】はばな、【F3】はみかん、【F4】はばなな、になって欲しいのです。 上手く質問できないのですが、とても困っています。宜しくお願いします。

  • 列のデータに変化があるとマクロを実行

    A列 - B列 - C列 - D列 1 - 123 - 234 - 678 2 - 456 - 567 - 890 3 - 333 - 444 - 555 4 - 765 - 876 - 321 5 - ? - ? - ? 6 - ? - ? - ? の様なデータがあり行のデータ日々増すとき C列最終行のデータD1に出したいのですが? C列のデータに変化があるとマクロを実行して 常にC列最終行のデータD1に出したいのです どなたか良きアドバイスをお願い致します。

専門家に質問してみよう