• ベストアンサー

列の値を行に揃えたいのですが

すみませんが教えてください。関数、マクロ、ピポットテーブル等本を読みましたが適したものが見つけられませんでした。うまく記入できなかったのですがデータ数が膨大な為なんとか最良の方法を教えていただきたいのですがよろしくお願いいたします。 A1から順に親I、B2に子(1),子(2)、子(3)とD列まで入力してあり、A2には 1234,1235,1236,1237とD列までそれぞれ電話番号の下4桁が入力されております。 A3には、また同じように親II、B2に子(1),子(2)、子(3)とD列まで入力、A4に電話番号が入力されてあり、このような組み合わせが延々と続きます。 これをA行に親Iの電話番号を頭に1234~1237、B行に親I~子(3)、C行に親Iの1234の電話番号を、子(1)~子(3)までそれぞれ割り振り。 そして、A5から親IIを同じように記入しなおしたいのです。 横に関連づけのあるデーターを縦に挿入し直し、なおかつ次の親から始まるデーターを記入することは可能でしょうか。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

ANo.2です。構造が良く分からないので、汎用性をこころがけて、コードを書いてみました。XL2000のコードです。ご参考まで。 'm行×n行 → n行×m行に変換 '$F$1:$H$4 → $F$7:$I$9 に、秘密の行列変換の操作を記述(式で行う) '1ブロック分を$F$1:$H$4にコピーし、変換された結果の$F$7:$I$9を出力先にペースト '縦に並んだブロックを、別シートに横に並べる 'シートが2,3になっているのは、1を他で使っていたからで、他意はなし。 Sub test() Dim sourceTopLeftCell As Range '元データの左上セル Dim destTopLeftCell As Range '複写先の左上セル Dim pasteTopLeftCell As Range '変換のため複写する先の左上セル Dim copyTopLeftCell As Range '変換後のデータの左上セル '4行×3列 → 3行×4列の例です Const m As Long = 4 Const n As Long = 3 Set sourceTopLeftCell = Sheets(2).Range("a1") Set destTopLeftCell = Sheets(3).Range("a1") Set pasteTopLeftCell = Sheets(2).Range("f1") Set copyTopLeftCell = Sheets(2).Range("f7") Application.ScreenUpdating = False Do Until sourceTopLeftCell.Value = "" sourceTopLeftCell.Resize(m, n).Copy pasteTopLeftCell.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False copyTopLeftCell.Resize(n, m).Copy destTopLeftCell.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Set sourceTopLeftCell = sourceTopLeftCell.Offset(m, 0) Set destTopLeftCell = destTopLeftCell.Offset(0, m) Loop Application.CutCopyMode = False Application.ScreenUpdating = True End Sub

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

規則性があるので、VBAでやれるでしょう。VBAは経験ありますか。 質問は実例を挙げて説明すべし。読者の負担を軽減せよ。 親+子は4人に決まっているのか?不自然だね。人数が変動すると関数では難しくなる。 色々な条件が質問に書いてないのでは? ーー 例の見本 A列  B列  C列  D列 岡村  茂  邦夫  ハナコ 1234 2345 3123 3423 木村  実  京子  真美 1122 2233 3344 4456  ・・・・・ ↓ A列  B列 C列  D列 1234 岡村 1122  木村 2345 茂  2233 実 3123 邦夫 3344 京子 3423 真美  4456 真美 延々と、と言うが2007ですか。256列の制限大丈夫か。 オーバーしないか。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

表の構造が理解できません。面白い質問があったら、解決しようと手ぐすね引いている回答者の皆さんも、返事のしようがないのでは? >A2には 1234,1235,1236,1237とD列までそれぞれ B2~D2に入っていた、子(1),子(2)、子(3)はどうなるの? >A行に親Iの電話番号を頭に... A行って何? エクセルの話では無いのでしょうか? OKWaveで、表の体裁を表現するのはやっかいですが、それをしないと、話が始まらないと思います。

mirokumaru
質問者

お礼

真意がわからない質問を書いてしまい申し訳ありません。それなのに2度もご回答くださいましてありがとうございました。VBAを現在勉強中なので、参考にさせていただきまして最短で良い仕事になるよう頑張ります。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

表の行列を入れ替える方法です。 一度に全ては無理でしょうが、一つずつコピー貼り付けを行うよりはらくだと思います。 http://www.microsoft.com/japan/users/tips/excel/147.mspx

参考URL:
http://www.microsoft.com/japan/users/tips/excel/147.mspx
mirokumaru
質問者

お礼

早速のご回答ありがとうございます。 データー数が600と多いので、参考にさせていただいて引き続き頑張ってみます。

関連するQ&A

  • A列の数値データの桁数に応じて、B列に異なる値を記入する方法

    初心者です。エクセル2000 で入力します。すみませんが、教えてください。  A列のデータが4桁ならB列に 01 を記入、A列のデータが6桁なら 60 を記入、A列のデータが7桁なら 06 を記入したいのです。      A列       B列 1行  4001  →→ 01 2行  270006 →→ 60 3行  6300021 →→ 06  4行  4101   →→ 01 5行  271001 →→ 60 6行  6200032 →→ 06

  • 行と列を入れ換える

    行と列を入れ換える 方法教えて下さい! もらったデータが列に名前・住所・電話…と見出しがはいってて、とっても使いづらいんです\(--;) (A1名前・A2住所・A3電話ってタイトル入ってるんです。普通、1行目に横にB1名前・C1住所・D1電話とか書かれてると思うのですが…) 1つ1つコピペは面倒なくらい量があるので、何とか一括で並べかえる方法ないでしょうか(・・;)?!

  • 関数について教えて下さい。A列の1行目に1、3行目に5、6行目に8、1

    関数について教えて下さい。A列の1行目に1、3行目に5、6行目に8、10行目に11と規則的でない行に規則的でない番号が入力されているデータがあり、このA列の番号を、シート2のA列の2行目から下に順番に表示したいのですが、そのような関数などあるでしょうか?。どなたかよろしくお願いします。 A列1行目 1   2行目   3行目 5   4行目   6行目 8   ・   ・   ・ 別シートA列 2行目 1          3行目 5        4行目 8         ・         ・         ・

  • エクセル 合計条件が行と列の時の計算式

    エクセルで、データがはいっている”データシート”と 合計を表示させたい”合計シート”があり、 合計シートに同じ番号の品名でおなじ日付のものを合計して 表示させたいと思っています。 データシートには、以下のように品名が同じものが複数はいっています     A列 B列 C列 D列・・・・Z列これからさらにデータが増えていきます 1行目品名 4/1 4/4 4/5 2行目Z100 10  20  30 3行目Z300 40  50  60 4行目Z100 11  22  33 5行目Z200 70  80  90  ・  ・ 200行くらいデータがありこれからさらにデータが増えていきます。 合計シートもデータシートと同じような形で データシートのA列の 同じ番号&同じ日付 の数字をそれぞれセルB2からZ200まで合計した 数字を表示させたいです。     A列 B列 C列 D列・・・・Z列 1行目    4/1 4/4 4/5 2行目Z100 21  42  63 3行目Z300 40  50  60 4行目Z200 70  80  90  ・  ・ 200行目 合計シートのB2セルに入力したのですが、#VALUEエラーがでてしまい ました。 =SUMPRODUCT((データシート'!$A$2:$A$500=合計シート!$A2)*(データシート'!$B$1:$Z$1,合計シート!$B1)) SUMIFでも試してみたのですが、エラーがでてしましました。 説明が分かりにくく申し訳ないですが、どなたか分かる方いらしたら 教えてください。よろしくお願いします。

  • エクセルで長い行を5行ごとに1列にするには?

    エクセルで行列の入れ替えの応用(になるのでしょうか?)をお尋ねします。 A列に例えば100行のデータが入っているのを、5行ずつ横並べにして、20行にしたい時どうすればよいでしょうか? A列 ------- データ1 データ2 データ3 データ4 データ5 データ6 データ7 データ8 データ9 データ10 (続く…) -------- こうなっているのを、  A列  B列   C列  D列   E列 ------------------------------------------ データ1 データ2 データ3 データ4 データ5 データ6 データ7 データ8 データ9 データ10 (続く…) ---------------------------------------- このように、表示したいのです。 お尋ねしているのは、100行ですが、 実は1500行ほどの長い名簿データが元のものです。 宜しくお願い致します。

  • エクセル100行1列を2行50列にする方法

    エクセルで行列の入れ替えの応をお尋ねします。 A列に例えば100行1列のデータが入っているのを、2行ずつ横並べにして、50列にしたい時どうすればよいでしょうか? A列 ------- データ1 データ2 データ3 データ4 データ5 データ6 データ7 データ8 データ9 データ10 (続く…) -------- こうなっているのを、  A列  B列   C列  D列   E列 ------------------------------------------ データ1 データ3 データ5 データ7 データ9 データ2 データ4 データ6 データ8 データ10 (続く…) ---------------------------------------- このように、表示したいのです。 宜しくお願い致します。

  • エクセルの行と列の項目を入れ替えたいのですが

    大きな表を作成しているのですが、行(1、2、3・・)と列(A,B,C,D・・・)を入れかえる必要がでてきました。すなわち、行を現在の列である(A,B,C,D・・・)とし、列を現在の行である(1、2、3、・・・)にしたいのです。こつこつデータを打ち直すしか方法はないのでしょうか?どなたか教えてください。お願い致します。

  • 列と行で一致したセルに

    HY-123 1/3 15個 AB-456 1/1 50個  といようなデータを入力したら 自動で下の表(A列の製造番号、1行目の日にちは固定の表)に 個数が入るにはどうすればいいですか? 番号と日付が一致すれば、その交差セルに個数が出るようにしたいのです。 宜しくお願いいたします。 1月  A     B    C    D 1          1    2    3 2  HY-123            15 3  AB-456   50

  • 行と列を入れ替えた式

    行と列を入れ替えた式 A=(a b c d)とします。この行列の行と列を入れ替えた行列は(a c b d)らしいんですが、行と列を入れ替えるという意味がよくわかりません 僕は、1行目と1列目を換えて、2行目と2列目を換えると考えました。しかし、その場合は(a b c d)で元に戻ってしまします。 何故、僕の考えでは行と列を入れ替えた行列にならないんでしょうか?? 誰か、うまく教えらる人 アドバイスおねがいします

  • 行と列を指示して表中の値を表示する方法を教えて下さい。

    ある行と列を指示して下表の様な値を表示する方法を教えて下さい。 例)A1セルに2行と入力、A2セルに4列と入力をしたら、A3セルに答えの"8"が出るようにしたい。 1列 2列 3列 4列 5列 1行 A B C D E 2行 1 5 6 8 9 3行 F G H J K 4行 3 4 1 5 8 5行 T R W A S

専門家に質問してみよう