• 締切済み

エクセルの使い方についてお教えください。

エクセルの使い方についてお教えください。 例えば、 a | b | f c | g | j d | h | k | m e | i | l | n | o | のように、右肩下がりになっている列を、 a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | のように一列にまとめる方法は無いでしょうか? 何卒よろしくお願いいたします。

みんなの回答

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

No.2・3です! No.2の説明で少し抜けているところがありました。 Sheet2のSheet見出し上で右クリック → コードの表示  これで白い画面が出ますのでその画面に前回のコードをそのままコピー&ペーストして マクロを実行です。 どうも何度もごめんなさいね。m(__)m

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

No.2です! たびたびごめんなさい。 前回の方法はちょっと強引でしたので VBAで考えてみました。 前回の表そのまま(作業用の列は削除して)↓のコードを 張り付けてマクロを実行してみてください。 Sheet2のSheet見出し上で右クリック → 白い画面が出ますので、 コードをこの画面から直接コピー&ペーストし 当方使用のExcel2003の場合は メニュー → ツール → マクロ から マクロを実行 Excel2007の場合はメニュー → 「開発」 → マクロ からマクロを実行 Sub test() Dim i, j, k As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") i = ws1.UsedRange.Rows.Count j = 1 Do While j <= ws1.UsedRange.Columns.Count ws1.Range(Cells(2, j), Cells(i, j)).Copy ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) j = j + 1 Loop For k = ws2.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If ws2.Cells(k, 1) = "" Then ws2.Cells(k, 1).Delete (xlUp) End If Next k End Sub 考え方として、Sheet1の1列目から順番にSheet2のA列にコピー(空白もそのままコピー)し 後から空白セルを削除するようにしてみました。 以上、参考になれば幸いです。m(__)m

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

こんばんは! 参考になるかどうか判りませんが・・・ VBAでの方法はすでに紹介されていますので、 無理やり関数でやってみました。 ↓の画像のように元データ分だけ作業用の列が必要になってしまいます。 Sheet1のデータをSheet2のA列に表示するようにしてみました。 Sheet1の作業列F2セルに =IF(A2="","",ROW(A1)+COLUMN(A1)*1000) という数式を入れオートフィルで列方向と行方向にずぃ~~~!っとコピーします。 そして、Sheet2のA2セルに =IF(COUNT(Sheet1!$F$2:$J$1000)<ROW(A1),"",INDEX(Sheet1!$A$2:$E$1000,MOD(SMALL(Sheet1!$F$2:$J$1000,ROW(A1)),1000),INT(SMALL(Sheet1!$F$2:$J$1000,ROW(A1))/1000))) という数式を入れ、オートフィルで下へコピーすると 画像のような感じになります。 尚、数式はSheet1の1000行目まで対応できるようにしています。 以上、かなり強引な方法ですが 参考にならなかったら読み流してくださいね。m(__)m

q3Ti5y8E
質問者

お礼

ありがとうございました。 そういう方法もあるんですね。私は全く思いつきませんでした。 やっぱりいろんなところ適当にクリックしてるだけじゃ使いこなせないんですね。 勉強になりました。ありがとうございました。

noname#192382
noname#192382
回答No.1

次のマクロで実現できます。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2010/7/26 ユーザー名 : ' Dim igyo As Integer, iretu As Integer, value As Variant, igyo2 As Integer, gyostrt As Integer igyo2 = 1 gyostrt = 1 For iretu = 1 To 5 For igyo = gyostrt To 5 Sheets("Sheet1").Select value = Cells(igyo, iretu) Sheets("Sheet2").Select Cells(igyo2, 1) = value igyo2 = igyo2 + 1 Next gyostrt = gyostrt + 1 Next End Sub

q3Ti5y8E
質問者

お礼

ありがとうございました。 実は私はエクセルは全く初心者で、マクロというものを今はじめて知ったのですが、便利なんですね。 ちなみに、頂いたプログラム(?)を参考にはできませんでしたが、実際に手を動かした操作を模倣させることは簡単に出来ました。 勉強します。

関連するQ&A

  • エクセルについて

    エクセルで A B C D E F G H I J K L M N O P Q R … と並んでいるデータを A B C D E F G H I J K L … のように並べ変えたいのですが、最も効率のよい方法を教えてください。 上記のアルファベット1つにセル1つです。 Office2007を使用しています。 以上、宜しくお願い致します。

  • C言語の配列の使い方について質問です。

    以下のプログラムを配列を使って見やすくしたいのですが、どのように作ったら良いでしょうか? 宜しくお願いします。 #include<stdio.h> int main(void) { int a, b, c, d, e, f, g, h, i, j, k, l, m ,n, o; /*5段目の処理*/ for(a = 1; a <= 15; a++) { for(b = 1; b <= 15; b++) { if(a == b) continue; for(c = 1; c <= 15; c++) { if(a == c || b == c) continue; for(d = 1; d <= 15; d++) { if(a == d || b == d || c == d) continue; for(e = 1; e <= 15; e++) { if(a == e || b == e || c == e || d == e) continue; // printf("%d %d %d %d %d\n", a, b, c, d, e); ////4段目//// if(a>b){ f=a-b; } else if(a<b){ f=b-a; } if(b>c){ g=b-c; } else if(b<c){ g=c-b; } if(c>d){ h=c-d; } else if(c<d){ h=d-c; } if(d>e){ i=d-e; } else if(e<d){ i=e-d; } // printf(" %d %d %d %d \n", f, g, h, i); /////3段目//// if(f>g){ j=f-g; } else if(f<g){ j=g-f; } if(g>h){ k=g-h; } else if(g<h){ k=h-g; } if(h>i){ l=h-i; } else if(h<i){ l=i-h; } // printf(" %d %d %d \n", j, k, l); /////2段目//// if(j>k){ m=j-k; } else if(j<k){ m=k-j; } if(k>l){ n=k-l; } else if(k<l){ n=l-k; } // printf(" %d %d \n", m, n); /////三段目///// if(m>n){ o=m-n; } else if(m<n){ o=n-m; } // printf(" %d \n", o); if(a != b != c != d != e != f != g != h != i != j != k != l != m != n != o){ printf("%d %d %d %d %d\n", a, b, c, d, e); printf(" %d %d %d %d \n", f, g, h, i); printf(" %d %d %d \n", j, k, l); printf(" %d %d \n", m, n); printf(" %d \n", o); } } } } } } }

  • 難解なエクセル集計の仕方を教えてください!!

    以下のように集計したいのですが、いい方法はありませんか? 解りにくいですが、宜しくお願いします!!! ------------------------ 【関係図】  (1)(2)という2つグループの関係を表しています。  組織図のようなものと思ってくださって結構です。 ■元データ 【表あ】  関係図を分解し、2つごとの関係に直したデータです。   【表い】  それぞれA-Oに対応する数字が入っています。 ■集計要望 【表あ】と【表い】ふたつのデータを元に、関係図に基づいた集計をしたい。 例: 1.Aを集計すると、Aの下位のものはすべて集計したい。(A~Gまでの集計) 2.Dを集計すると、Dの下位のみが集計されるようにしたい。(D+E+F+G) 3.Fを集計すると、Fの下位のみ集計したい。(F+G) 4. Iを集計=I+K、Jを集計=J+L+M+N+O 【関係図】  (1)A-B-C      D-E       F-G  (2)H-I-K     J-L-M       N-O 【表あ】  A ― B  B ― C  B ― D  D ― E  D ― F  F ― G  H ― I  I ― K  H ― J  J ― L  L ― M  L ― N  N ― O 【表い】 A=1 B=2 C=4 D=5 E=6 F=7 G=8 H=9 I=10 J=11 K=12 L=13 M=14 N=15 O=16

  • エクセル:データの間にスペースを入れて表示させたいのですが

    エクセル:データの間にスペースを入れて表示させたいのですが エクセル2007を使用しています。 英数や+-が混在した30桁のデータの間に スペースを7・4・4・4・7・4 文字毎に 入れて表示させたいのですが いい方法はあるでしょうか?   a0b1c2d3e-f3g-h4i5j6k+l7m8n9o+ を   a0b1c2d 3e-f 3g-h 4i5j 6k+l7m8 n9o+ の様に表示させたいのですが。 ご存知の方がいらっしゃいましたらお教え下さい。 宜しくお願いします。

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • 2行のセルの入れ替え。

     初めまして、よろしくお願いします。  セルに A B C D E F G H I J K L 1 a b c d e f 2 g h i j k l 3 m n o p q r 4 s t u v w x 5 " ・ " ・ " ・ " 100 "  という表があります。これを A B C D E F G H I J K L 1 a b c d e f g h i j k l 2 m n o p q r s t u v w x 3 " 4 " 5 " ・ " ・ " ・ " 100 "  という風に、偶数行のデーターを奇数行の後ろにつけるようにしたいと思います。無理ならば奇数行だけのデーター、偶数行だけのデーターとなるように、何かよい方法を教えて頂きたく、よろしくお願いします。

  • リストのデータを重複なしでランダムに抽出する

    シート1に下記のように14種類の名前リストがあります     A 1   A 2   B 3   C 4   D 5   E 6   F 7   G 8   H 9   I 10  J  11  K 12  L 13  M 14  N 上記の名前を下記のように別シートの数列おきの列(行は同一)に重複なしに行毎にランダムに抽出する事が関数で出来るでしょうか?(エクセルは2010です) ちなみに下記は一列おきのセルに抽出した例です   A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA 1 D   L   K    I    A   M   N    B   H   J    C    F    E   G 2 K   J   M   H    I   G   F    E   D    A    B   N   C    L 3 E   J   A    L   B   M    K   C   N    G    F   D    H   I どなたか教えていただける方がおりましたらよろしくお願いします。

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

    エクセルで複数の範囲すべてに同じ数字があった場合、その数字を抽出することは出来ますか? 例: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”と出したいのですが、どうしたら良いでしょうか。 どうぞよろしくお願いします。

  • エクセルのデータ並び替え

    列(A)に1000個あるデータを、4列X250行に自動的に並び替える方法はありますか? つまり A   A B C D B   E F G H C ⇒ I J K L D   M N O P E   ・ ・ ・ ・ ・ ・ ・ と、並べかえたいのですが、いい方法はありませんでしょうか?

  • エクセルについて

    エクセルにおいて、下記のように1~5のみ残し、その他無くなった数字は見えなくする、もしくわ文字の色を白にして見えないようにしたいと思っています。   A B C D E F G H I J K L M N O P Q R S T U 1 0 0 0 0 0 1 2 3 3 3 3 3 4 5 5 5 5 5 5 5 5 2 0 0 1 2 2 2 2 3 4 4 5 5 5 5 5 5 5 5 5 5 5         ↓         ↓   A B C D E F G H I J K L M N O P Q R S T U 1 1 2 3 3 3 3 3 4 5 2   1 2 2 2 2 3 4 4 5 私は基本的な関数は使用出来ますが、VBAは勉強し始めたばかりです…。 良い方法をご教示頂ければと思っております。 よろしくお願いいたします。 ※記入した例において、1~5の列がズレていますが、行も列も同じばしょのままでお願いします。

専門家に質問してみよう