• ベストアンサー

EXCELで「行と列を入れ替える」操作を何回も繰り返して自動実行する方法はないでしょうか?

EXCELシート上で、セルを範囲指定してコピー後に、コピー先のセル上で[形式を指定して貼り付け]を選択し、画面上の[行列を入れ替える]のチェックボックスに印を入れて実行すると、行と列が入れ替わった表が貼り付けられますよね。 このような操作を何千回も繰り返す必要があるのですが、今は1回ずつキーボード操作を行っているのでかなり時間がかかっています。 自動的に上記の操作が実行されるようにする方法はありませんでしょうか? ちなみに、「行と列を入れ替えたいセルはすべて同じシート(ブック)上にあります。」 例)(EXCEL上で次のように並んでいます) 【現状の並び方】 氏名1 住所1 電話1 氏名2 住所2 電話2  ・  ・ (上記のようなセルデータが数千つづく) 【上記のデータを次のように並べたいのです】 氏名1 住所1 電話1 氏名2 住所2 電話2  ・  ・ (数千つづく) 何か方法がありましたら、お教え願います。 どうぞ宜しくお願いいたします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

関数を使ったほうが早いような気がします。 さきのがA列(A1:A99)として B1=INDEX($A$1:$A$99,(ROW()-1)*3+COLUMN()-1,1) としてD1まで列方向にコピー後、行方向にコピー 上記の数式の範囲をコピーして、別シートにでも「編集」「形式を選択して貼り付け」「値」で確定させる。

tomitarou6699
質問者

お礼

即座のご回答、本当にありがとうございます! 早速試してみます。 これでできたら凄く効率化されると思います!!

その他の回答 (1)

noname#123709
noname#123709
回答No.2

マクロを使った一例を・・・。 当然範囲等は修正する必要があります。 さっぱり分からない!というのであれば#1さんの方法の方が良いかと思い ます。 Sub test() Dim i As Long With Sheets("Sheet1") For i = 1 To 31 Step 3 .Range("A" & i & ":A" & i + 2).Copy .Range("D65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlAll _ , Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True Next i End With End Sub

tomitarou6699
質問者

お礼

詳細なご回答、本当にありがとうございます!! 私はマクロは全く理解できないため、せっかく式までご提示いただいたのに、どう適用してよいか現時点では良くわかりません・・。ただセルやシート名を実際のものに置き換えてやってみます。

関連するQ&A

  • マクロでコピーしたセルを4行目毎に挿入する方法

    こんにちは!よろしくお願いいたします。 Excel2003で計算式が入力されている1行をコピーして 4行目にコピーしたセルを挿入したいのですが、複数 あるため、マクロを作りたいと思っています。   A   B  C 1 氏名 住所 件数  → 計算式が入力されている 2 氏名 住所 電話 3 氏名 住所 郵便 4 氏名 住所 ふりがな            → 1行目の計算式も含めコピーしたい この操作を繰り返すマクロを作成したいと思っています。 マクロは初心者です。ご指導よろしくお願いいたします。

  • Excelで列に入っているデータを行に展開する方法

    添付画像のように、Excelシート上のA列に、店名、住所、電話番号が全て入っている状態を、A列に商店、B列に住所、C列に電話番号というように振り分けたいです。 シート上のデータは、既に振り分けてあるものと振り分けていないものが混在しています。 振り分けていないものは、店名と電話番号だけ、店名と住所と電話番号といったパターンがあります(他に、店名とメールアドレスだけの様なパターンも)。 店名+電話番号、店名+住所+電話番号 のパターンはある程度かたまっているため、Sheet上で範囲を手動で選択して、行への展開を実行したいと思っています。 関数かVBAで効率よく実行する方法を教えてください。 Excel2010です。

  • EXCEL 行と列を指定して、範囲指定する方法

    EXCELの使い方を教えてください。 関数で試みているのですが、以下のような操作を行うことは可能でしょうか? (マクロ(VBA?)は使用したことがないため、抵抗があります。それでも、マクロを組むしかないというのであればその方法も教えてください。) 「表示シート」にて行と列を指定することで、 結合された5行×5列の表を表示させたいのです。 指定するセルも結合させており(「入力シート」)、 結合されたセル(行/列)を指定して、表示する範囲を決めてやりたいのです。 結合を解いて、たくさんの文字を指定する形にしてしまえば楽かもしれないのですが、この2文字だけで他にもたくさん処理させているため、 指定する文字はこの2文字のみで処理させたいです。 自分なりには、「表示シート」のD10セル(F10まで結合されている)に =INDEX(SUMPRODUCT((入力!B3:B27=表示!D4)*(入力!C2:Z2=表示!D3)),1,2) というような関数を組んでみたのですが、うまく表示されません。 なにか、うまく表示させる方法はあるのでしょうか? ちなみに、表内の犬など狐などは便宜的に書いているだけで、 数字が入るセルか、日付が入るセルか、文字列が入るセルかということだけが汲み取っていただければと思います。 入力するセルと表示させるセルの大きさも異なるようにしたいので、 良い方法があれば教えてください。 よろしくお願いいたします。

  • エクセルの文字列操作

    住所録の様式で A列にNo、B列に氏名、C列に住所のファイルがあり、 C列の住所で、1個のセルに何故かしら「住所と電話番号」が入っています。 住所と電話番号を夫々別の列に分割したくて、 電話番号は、RIGHT 関数で取り出しました。 住所は、文字数が一定でないので、LEFTまたはMID関数では出来ません。 ここで質問です 住所データの末尾に混在する電話番号は10文字の場合に限定し、 文字数の異なる、住所(○○市XX町△△番地○△荘2-103など)のみ 抽出する方法はありませんか。 なお、VBAなどは無知です、エクセル関数だけの操作があれば教えてください。

  • Excelで列(行)挿入で計算式を保持する方法

    あるセルを参照する際に、セル番号の指定ではなく、 「一つ上のセル」「1つ左のセル」 といった指定がしたいです。(R1C1方式、という意味ではなく) 行のコピー、挿入の影響を受けないようにするのにいい方法はありますか? 例えば・・・ B3のセルに"1"を入力して、 C3~E3のセルにそれぞれ "=B3+1", "=C3+1", "=D3+1" と計算式を入力すると、 B3~E3がそれぞれ "1", "2", "3", "4" となります。 この状態で、"3"の値が表示されているDの列を列ごとコピーして そのままC列とD列の間にコピーした行を挿入します。 すると、B3~F3がそれぞれ "1", "2", "2", "3", "4" となります。 この時点でC3~F3の各セルの計算式は "=B3+1", "=B3+1", "=C3+1", "=E3+1" となっています。 そうではなく、この例の場合こういったオペレーションを行った後にも 「左隣のセルに1を追加」という状態を保持したいです。 この現象をうまく回避できる方法や関数はありますでしょうか? ちなみに、上記のように1列だけコピーして挿入、という操作が前提です。 D,Eの列をコピーして、E,Fの列に貼り付けるとこの現象は回避できますが、 そうではなく、あくまで1列だけコピー&挿入という操作での解決策を探ってます。 説明がわかりにくいかもしれません。すみません。 補足が必要であれば言って下さい。 宜しくお願いします。

  • Excelの数式のコピーで列移動で行番号を変えたいのですが

    Excelで表管理をしているのですが、数式のコピーをする時に列を移動させて行の方を変更させる方法は無いのでしょうか? 例えばB2のセルに(Sheet2!B2)と入っている物を、C2,D2,E2…と列の方にコピーをさせた場合に(Sheet2!B3)、(Sheet2!B4)(Sheet2!B5)と行の方の数字だけを変更させたいんです。 $を付けたりして試して見たのですが行は行、列は列の方しか参照してくれないみたいなので、何か方法があれば教えて頂けないでしょうか? 作りたい表の数が多く手入力では大変なので、簡単な操作があればよろしくお願いします。

  • エクセルの操作

    エクセル初心者です。仕事の都合で次のような操作をしたいのですが、悪戦苦闘しています。ご存じの方教えてください。 *「シート1」の各行の、A列には「整理番号」が、B列からG列までにはそれぞれのセルに「データ」が入力してあります。 *「シート2」の任意のセルに「シート1のいずれかの整理番号」を入力すると、「シート1」内の「該当する整理番号の行(?)」が選択され、それらの各BセルからGセルのデータが、「シート2」の任意のセルに入力されるようにしたいのです。 書き方がまずいかもしれませんが、よろしくお願いします。

  • エクセルで、非表示になっている列もコピー

    エクセルで、あるシートの一部の列が非表示になっています。 フィルターしている状態で行をコピーし、他のシートに貼り付けると、 非表示になっている列のセルが貼りつきません(可視セルのみコピーされます)。 いちいち、非表示列を再表示せずに、 すべての列を貼り付けるには、どうすればよいのでしょうか。 Excel2007

  • エクセル2003で行を列にしたい

    エクセル2003で 行にならんだ数値を他のシートに列にならべてコピーしたい。 一行ごと、或いは表データを回転させたいのですが 方法はないでしょうか。

  • Excelのデータ1行を1シートに自動転記する方法

    複数行あるExcelシートで、各行に入力されているセルのデータを、 別シートの所定の位置に配置して行く方法はありますか。 もしかしてマクロとかになりますか。 具体例を挙げますと、例えば身体測定データがあって、氏名/身長/体重がそれぞれA列/B列/C列に1人あたり1行で並んでいて、そのデータが10人分(10行)あったとすると、別に10シートが生成されて、それぞれのシートに1人分(例えば第一シートのA1セルに1人目の氏名、A2セルに1人目の身長,A3セルに1人目の体重)が書かれているようなイメージです。

専門家に質問してみよう