• ベストアンサー
  • すぐに回答を!

MS-excel 10列毎に改行したい

MS-excel2003で、A1~W1までデータが横並びに入力されています。 これを10列毎に改行したいのですが、マクロでどのようにやればよいでしょうか? 図解すると、、 A1 B1 C1 D1 F1 G1 H1・・・・ のデータを A1 B1 C1 D1 F1 G1 H1 I1 J1 K1 L1 M1 N1 O1 P1 Q1 R1 S1 T1 U1 V1 W1・・・・・・ と したいのです。 これをマクロで行いたいのですが、ご教授願えませんか。

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数1207
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.6
  • tom04
  • ベストアンサー率49% (2537/5117)

No.4です。 補足に >与えられるファイルによって100列以上のものがあったりします。 とありましたので・・・ データは1行目のみあり、何列あっても対応できるようにしてみました。 Sub test2() Dim i As Long Application.ScreenUpdating = False For i = 11 To Cells(1, Columns.Count).End(xlToLeft).Column Step 10 Range(Cells(1, i), Cells(1, i + 9)).Cut Cells(Rows.Count, 1).End(xlUp).Offset(1).Select ActiveSheet.Paste Next i Application.ScreenUpdating = True Cells(Rows.Count, 1).End(xlUp).Offset(1).Select End Sub こんなんではどうでしょうか?m(_ _)m

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お見事っ! 有難うございました。m(_ _)m

関連するQ&A

  • エクセル 複数範囲から重複する数字を抽出

    エクセルで複数の範囲すべてに同じ数字があった場合、その数字を抽出することは出来ますか? 例:A1| B1 C1 D1 E1|F1 G1 H1 I1|J1 K1 L1 M1| N1 O1 P1 Q1| (1) B1~E1=(20 50 60) (2) F1~I1=(20 50 60) (3) J1~M1=(20 60) (4) N1~Q1=(20 50 80 ) (1)B1~E1、(2)F1~I1、(3)J1~M1、(4)N1~Q1の4つの範囲すべてに入っているのは、”20”になります。 A1に”20”と出したいのですが、どうしたら良いでしょうか。 どうぞよろしくお願いします。

  • EXCEL2003で判定式について教えてください。

    仮にA1に12.9、B1に12、C1に11.4、D1に12.5とあるとして F1にはA1-B1の値を、G1にはB1-C1の値、H1にはC1-D1の値を それぞれ10倍して(小数点以下を無くし見易くする為に) 表示するものとします。 その後F1~H1の3つの値(+9、+6、-11)に対し、+5以上が 一つでもあるならなら「A」、+1~+4のみは「B」、 +の値が一つもなく0以下なら「C」と判定させたいのです。 そこで当初J1で =IF(F1:H1>=5,"A",IF(F1:H1<=0,"C","B")) としたところ複数のセルに対してはできないようなので 一旦J1でMAXを使い(+5以上か)を判定し、L1に =IF(J1>=5,"A",IF(J1<=0,"C","B")) と二つのセル、二つの式で結果的には出来たのですが、 なんとかすっきりと一つの関数式で判定させることは 出来ないでしょうか?

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

その他の回答 (5)

  • 回答No.5
  • imogasi
  • ベストアンサー率27% (4558/16316)

VBAでやったほうが、初歩的な考えで済むと思う。 標準モジュールに Sub test01() 'Cells(i,j) は元データのセル jは23以下、iはデータ行数 'Cells(k,m)は 行き先のセル kは行、lは列 '--行先の始のセル k = 10 '行 l = 1 '列 '-- d = Range("a9").End(xlUp).Row MsgBox d '-- For i = 1 To 3 For j = 1 To 23 Cells(k, l) = Cells(i, j) '--次にセットするセルの位置の行と列の準備 If l = 10 Then k = k + 1 '行を1行下へ、(+1) l = 1 '列はA列へ Else l = l + 1 '列を右へ(+1), 行は変えず End If Next j Next i End Sub 上記の場合データは23X9以下という事でやっている 整理されたデータはA10から作られる。 k = 10 '行の10 d = Range("a9").End(xlUp).Rowの9 を変えればデータ1000行でも出来る。 ---- 例データ a1a2a3  以下略 a21a22a23 b1b2b3       b21b22b23 c1c2c3       c21c22c23 半端の終わりであっても良い 結果 a1a2a3a4a5a6a7a8a9a10 a11a12a13a14a15a16a17a18a19a20 a21a22a23b1b2b3b4b5b6b7 b8b9b10b11b12b13b14b15b16b17 b18b19b20b21b22b23c1c2c3c4 c5c6c7c8c9c10c11c12c13c14 c15c16c17c18c19c20c21c22c23

共感・感謝の気持ちを伝えよう!

質問者からのお礼

なるほど、非常に丁寧にご回答いただき有難うございました。 感謝いたいます。

  • 回答No.4
  • tom04
  • ベストアンサー率49% (2537/5117)

こんばんは! データはA1~W1セルまでしかないわけですよね? 一応そういうことだとしての一例です。 Sub test() Dim i As Long For i = 11 To 23 Step 10 Range(Cells(1, i), Cells(1, i + 9)).Cut Cells(Rows.Count, 1).End(xlUp).Offset(1).Select ActiveSheet.Paste Next i Cells(Rows.Count, 1).End(xlUp).Offset(1).Select End Sub こんな感じではどうでしょうか?m(_ _)m

共感・感謝の気持ちを伝えよう!

質問者からの補足

有難うございます。 データソースですが、、今はW列までしかないのですが、与えられるファイルによって100列以上のものがあったりします。

  • 回答No.3
  • mu2011
  • ベストアンサー率38% (1910/4994)

一例です。 ご例示のE列が抜けているのは誤植としています。 For Each a In Range("A1:W1") Range("A5").Offset((a.Column - 1) \ 10, (a.Column - 1) Mod 10) = a.Value Next

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.2
noname#204879

マクロを使わない別解す。 添付図参照 A3: =IF(ISERROR(INDEX($A$1:$W$1,,(ROW(A1)-1)*10+COLUMN(A1))),"",INDEX($A$1:$W$1,1,(ROW(A1)-1)*10+COLUMN(A1)))

共感・感謝の気持ちを伝えよう!

質問者からのお礼

有難うございます。 ただ、マクロでないとダメなので、できればそちらのご教授いただきたく存じます。

  • 回答No.1
noname#158634

とりあえず、それは、「改行」じゃない。 確認したいんですが、コピー(カット)&ペースト、もしくはA2に「=K1」と入力する方法を取らない理由は何でしょうか?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • エクセル、任意の「行」だけを抽出したい。

    こんなことできますか? A1:F100のセル内にランダムに数字が入っています。 質問1) この中から 1行目→3行目→5行目と一つ飛ばしで入っているデータを抽出してH1:M100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 A1-B1-C1-D1-E1-F1 A2-B2-C2-D2-E2-F2 A3-B3-C3-D3-E3-F3 A4-B4-C4-D4-E4-F4 A5-B5-C5-D5-E5-F5 A6-B6-C6-D6-E6-F6 A7-B7-C7-D7-E7-F7 ・・・ A100-B100-C100-D100-E100-F100 の中から A1-B1-C1-D1-E1-F1 A3-B3-C3-D3-E3-F3 A5-B5-C5-D5-E5-F5 ・・・ を抽出して H1-I1-J1-K1-L1-M1 ・・・ H100-I100-J100-K100-L100-M100 の範囲内に表示させたいです。 質問2) 同様に、 1行目→4行目→7行目と二つ飛ばしで入っているデータを抽出してO1:T100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 ※ 説明がわかりにくいかもしれませんが、よろしくお願いします。

  • これを一つの数式にしたい。

    こんばんは。 セルが A1 809900円 B1 A1÷20 C1 8×20+31 D1 C1÷20 E1 B1÷D1 F1 E1×8 G1 F1×20 H1 31×E1 I1 G1+H1=809900円 を一つの式にしたいのです。教えて下さい。

  • エクセルにて複数セルの並び替え

    こんにちは、エクセルについて教えてください。列はA~Hまで、行は1~200行ほどに値が入っています。 例えばValueが以下のようだとします。 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 ... これらのValueを、別のSheetに以下のように並び替えたいのですが、 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 A3 B3 ...と、これがA200~H200の行分まで。なのでPaste後は800行になります。どうにかマクロか何かで簡単に 出来ないかと思い、どなたかご教授いただければと思います、よろしくお願いします!

  • Excel2003で数式で求めた値の表示を変更するにはどうすればいいのでしょうか

    仮にA1に12.9、B1に12、C1に11.4、D1に12.5とあるとして F1にはA1-B1の値を、G1にはB1-C1の値、H1には C1-D1の値を表示するものとします(単純な減算です)。 そして値に付く+-の演算子を+は▼ ーは△で表示させるにはどんな関数を入れれば 良いでしょうか? (A1)12.9-(B1)12=0.9→+9→▼9 最終的に「▼9」ような表示にしたいのです。

  • エクセル数式について

    A1のセルに¥123,456,789 9桁の数値があり、 B1~K1のセルに左から順に(下記の通り)表示したいのですが、 どのような方法がありますか? B1→\ C1→1 D1→2 E1→3 F1→4  G1→5 H1→6 I1→7 J1→8 K1→9

  • 個々のセルに入力した数字の合計を別のセルに一桁ずつ表示する方法

    こんばんは。いつも大変お世話になります。 なかなか良い関数の使い方が思いつかず、また皆様のお知恵を貸していただければと思い、質問させて頂きます。 E1に「3」、F1に「5」、G1に「7」 今日の売上値とする H1に「9」、I1に「7」、J1に「5」 昨日の売上値とする ※ G1,J1は百の位 F1,I1は千の位 E1,H1は万の位です この合計値をA1(万の位)、B1(千の位)、C1(百の位)にそれぞれ出したいのです。 この場合だとA1に「13」、B1に「3」、C1に「2」となります。 上記のような事をしたいのですが、可能でしょうか? 申し訳ありませんが、何とぞよろしくお願いします。

  • エクセルで1行に1データ以上入力されたらエラー表示

    A1からG1の行で7つのセルがありますが、 その行で1データ以上入れたらエラー表示させることは出来ますか? 例えば A1にデータを入れたらB1・C1・D1・E1・F1・G1にはデータは入れられない。 D1にデータを入れたらA1・B1・C1・E1・F1・G1にはデータは入れられない。 という感じです。 どうぞよろしくお願いします。

  • Excelでの文字列編集(再質問です)

    Excel2003での再質問です。 今、A列~E列に以下の文字が入っています。 A  B  C  D  E 1あ い う え お  2あ   う 上記の内容を「・」で区切りを入れて、F列に結合させたいのですが  F 1あ・い・う・え・お 2あ・う この質問に対しては、以下のご回答をいただき、解決することが出来ました。 =SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1&B1&C1&D1&E1,A1,A1&" "),B1,B1&" "),C1,C1&" "),D1,D1&" "))," ","・") このたび、3列増やし、A~Hまでの計算式を以下で行ったところ、 =SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1&B1&C1&D1&E1&F1&G1&H1,A1,A1&" "),B1,B1&" "),C1,C1&" "),D1,D1&" "),E1,E1&" "),F1,F1&" "),G1,G1&" "))," ","・") 計算式がエラーとなります。ご教示いただけますでしょうか? よろしくお願いします。

  • エクセルでの有給計算について

    エクセルで有給の残り時間を計算したいと思うのですが、作った関数が残り時間より使用時間が多いと誤差が出てしまうのですがアドバイスいただけないでしょうか?A1に日数B1に時間, C1=A1*value("7:45")+B1, D1に使用日数,E1に使用時間,F1=C1-D1* value("7:45")-E1,G1=F1*24*60,H1=(G1/465),I1=G1-H1*465,J1=int(H1/60),K1=I1-J1*60 としたのですが、例えば40日と2:45有給が残っており、4:00使用したとすると時間の部分が6:30となってしまいます。 うちの環境ではフリーソフトを入れれないのでエクセルぐらいしかこういった計算ができません。また、時間給は15分単位で取得でき、一日の労働時間は7:45なので上記のような形で作りました。

  • エクセルの数式、どうつくればいい?長文ですみません!

    A1セルに原料名、B1&C1には原産地(販売会社別に区別され、同じ場合もあり)、D1・E1にはB1原産地の単価が(販売方法の違いで単価は2列に区別)、同じくF1・G1にC1原産地の単価が表示されています。H1には各原料の統一基準となる原産地がそれぞれ設定されており、B1・C1がともにH1と同じ産地ならD1~G1の4つの中から最小単価を導きたいです。(ゼロは除いて計算したい)B1・C1のどちらかがH1と一致する場合には一致する方の産地の単価、つまりD1~E1かあるいはF1~G1どちらか2列の中で最小単価を求めたいです。(除:ゼロ)さらに、B1・C1のどちらもH1と一致しないときはB1・C1の総販売額がI1(B1に対応)・J1(C1に対応)に表示されているので総販売額の高い方の産地の単価で(D1~E1あるいはF1~G1)最小値を求めたいです。(除:ゼロ)どんな式にすればいいのか数式エラーで壁に激突中です。数式にお詳しい方、お知恵を貸してください。お願いいたします!