• 締切済み

エクセルで25行間隔で行をコピーする方法

エクセルに関して質問させてください。 エクセルに25行間隔で、行ごとをコピーしたいです。 その行は前の24行分の平均値を出したもので関数が入っています。 全部で5万行あるため、平均値の行だけを抽出する法則があればと思いました。 お分かりになる方いらっしゃいましたら教えてください。 よろしくお願いします。

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

次のようにすることでマクロや関数を使わずに抽出し表示させることができます。黄色のセルといった色にこだわる必要もありません。 仮にシート1のP列に平均値が載ったセルが有るとします。 P列を選択したのちに「ホーム」タブの「検索と選択」から「検索」をクリックします。 表示の画面で検索する文字列の窓に =AVERAGE と入力して「すべて検索」をクリックします。 該当するセル番地などの一覧が下方に窓に表示されます。 Shiftキーを押しながら最初の行から最終行までをクリックします。エクセルの画面上では該当のセルが選択状態になりますので右クリックして「コピー」を選択します。 その後にシート2のA1セルを選択してから右クリックして「選択のオプション」から「リンク貼り付け」を選択して貼り付けを行います。 シート1に戻ってEscキーを押してから「検索と置換」の画面を消します。 シート2のA1セルの数式バーには例えば =Sheet1!$P$10 などのように表示されますね。 シート1での該当の行を抽出して表示できるようにするためには、例えばシート1のA列からすべての列を抽出して貼り付けできるようにするためにはA1セルの式を例えば =Sheet1!A$10のように変換することが必要です。 そのために次の操作を行います。 シート2のA列を選択したのちに「検索と選択」から「置換」をクリックします。 検索する文字列の窓には $P と入力し、置換後の文字列の窓には A と入力し、「すべて置換」をクリックします。 この操作によって例えばA1セルの式は =Sheet1!A$10 のように変わります。この式を右横方向にドラッグコピーすることでシート1の10行目のA列から横の列のデータが表示されることになります。 P列から横の列を表示したいのでしたら 置換後の文字列の窓には P と入力すればよいでしょう。 実際には例えばA100セルまでデータが有るとしたらA1セルからA100セルまでを選択してからA100セルの右下隅の■をクリックして右横方向にドラッグコピーすれば該当するすべての行のデータが表示されることになりますね。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.4

Excel2007以降であれば、フィルタを使えば、黄色のみ表示出来ます。 色のある列を選択→データ→フィルタを選び、1行目の▼より、色フィルタ→黄色を選びます。 これを、ホーム→検索と選択→条件を選択してジャンプ→可視セルを選びOKし、コピーして、新規シートに貼り付けます。 Excel2003までであれば、以下のマクロでできます。 Sub macro() Dim C As Range For Each C In Range("P1:P" & Range("P" & Rows.Count).End(xlUp).Row) If C.Interior.ColorIndex <> 6 Then C.EntireRow.Hidden = True End If Next C Cells.SpecialCells(xlCellTypeVisible).Copy Worksheets("Sheet2").Range("A1").PasteSpecial xlPasteValues Rows.Hidden = False End Sub

回答No.3

時間掛かりそう... Sub CopyRows() Const xSheet = "Sheet1" '入力(データ)シート Const xStep = 25 '抽出の行間隔 Const xTop = 2 '入力開始行 Const wTop = 2 '出力開始行 Dim xEnd As Long Dim jj As Long Dim kk As Long '出力はアクティブシート xEnd = Worksheets(xSheet).Range("A65536").End(xlUp).Row kk = wTop For jj = (xStep + XTop - 1) To xEnd Step xStep Worksheets(xSheet).Rows(jj).Copy ' Rows(kk).PasteSpecial Paste:=xlPasteFormulas Rows(kk).PasteSpecial Paste:=xlValues kk = kk + 1 Next End Sub

回答No.2

その対象となる行全体が黄色で塗られているとして、 1. [Ctrl]+[F]検索 2. 書式▼ 書式 パターン 黄色 [OK] 3. [すべて検索] - [Ctrl]+[A]すべて選択(黄色で塗られた行が選択される 4. [閉じる] 5. [Ctrl]+[C]コピー 6. 別シートのA1セルを選んで [Ctrl]+[V]貼り付け

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

表をまず、新規シートに、形式を選択して貼り付け→値で貼り付けます。 A列を選択し、右クリック挿入で1列、挿入し、 A1のセルに1、A26のセルに2と入力し、 A1:A50まで選択し、下へ5万行までオートフィル 表全体を範囲選択→データ→並べ替え A列をキーにして、昇順で並べ替えします。 A列に数字がある部分が平均値の行です。

maki0225
質問者

補足

早々の御解答ありがとうございます。 そんな方法があるとは思いつきませんでした。 ただ折角教えていただいたのに申し訳ありません。 今やってみたのですが、最初のほうは25行づつなのですが、微妙にずれている部分があったようです。。。。。 抽出したい平均値の行の部分は黄色に背景が塗られているのですが、背景が塗られている行だけ抽出するような方法はありませんでしょうか。 表としては現在下記のようになっています。 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1(←ここが平均値で黄色い拝啓) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1(←ここが平均値で黄色い拝啓) 行はもっと多く、大体25行間隔です。 またA行からではなくP行から始まっているような感じになっています。 MVBをわからないなりに調べてやってみているのですが、エラーがでてしまい下記ような状態でとまっています。 Sub try() Dim i As Long, j As Long Dim k As Integer i = 26 j = 1 For k = 1 To 40 Sheets("Sheet2").Range("P" & Z).Resize(1, 24).Value = _ Sheets("Sheet1").Range("P" & Z).Resize(1, 24).Value i = i + 25 j = j + 1 Next End Sub 度々の質問申し訳ありまえんが、黄色で塗られた部分を抽出する方法ありましたら教えていただけませんでしょうか。 よろしくお願いします。

関連するQ&A

  • Excelで数行間隔で離れているデータの合計をしたい

    10列目から5行づつ離れたデータを合計したいと思っています。 例えばA10に1,A15に2,A20に3....とデータが続いているとします。 この5行離れているというのはかわりません。Excelの組み込み関数で このような計算をすることができるでしょうか? VBAを利用して5行間隔、X行間隔でデータを合計するというプログラムは作ることができたのですが、組み込み関数を利用してX行間隔のものを合計するといったことができるのかなと思い質問させていただきました。

  • エクセルでの文字の行間隔変更の方法

    エクセルでPTA広報誌を作ることになりました。 普段からパワーポイントの方に慣れているので、ほとんどをパワーポイントで編集し最終的にエクセルにコピー・ペーストすることにしました。 ところが、貼り付けてみるとテキストボックスに入力した文字の行間隔が詰まってしまい、行間隔をあける方法がわかりません。 家のエクセルのバージョンは97で、たぶん古いからでは?と思います。新しいバージョンのエクセルならできますか?

  • エクセルでの行間隔の操作

    エクセル2007を使っています。セルの書式を「折り返して全体を表示する」に設定しています。確かに折り返して表示されるのですが、行間隔をもう少し広げたいのです。行の高さを変更しても、行間隔は広げられません。何か良い方法がないでしょうか? なお、作成したい文書は20行分くらい、文章を折り返して表示させています。ワードなら簡単ではないかとお思いになると思いますが、あえてエクセルで作りたい都合があるのです。

  • ワードで行と行の間隔を狭くしたい

    ネットのホームページの一部をコピーしてワードに張り付けた場合、行と行の間隔が広くなってしまう場合があります。 この間隔を狭くしたいのですが、ページ設定で行数を増やしても(行送りを減らしても)間隔が狭くなりません。 ホームで「行間」を選択して調整しても、狭く出来ません。 使用しているワードは2007です。 質問1 どうしてこのような状態になってしまうのでしょうか? 質問2 どのようにすれば、行と行の間隔を狭くできるでしょうか? 質問2の方だけでも構いません。お分かりの方がおられましたら、ご教示ください。 よろしくお願いします。

  • Excelの行間隔について

    よろしくお願いします。 Excel2002です。 「折り返して全体を表示する」を使用し、1つのセル内に数行の文字を入力しています。 この時、行と行の間隔が文字の高さピッタリになっていて読みにくいのです。 「縦位置」を均等割付か両端揃えにして行の高さを高くすると行間隔が広がることはわかったのですが データの量が多く、また行によりセル内の行数がまちまちなので、各行で行の高さを調整するのは大変なのです。 何か良い方法があれば、教えてください。 お願いします。

  • エクセルで関数を使った行のコピー

    エクセル(2000)で、 関数を使って出した行(単純なタテ計)をコピーして、同じファイルの別のワークシートにコピーしたら、数字のところが全て#REF!と表示されます。数字を表示させるには どうしたら良いのでしょうか? なお、使っている関数は全てSUMです。

  • エクセル コピー先に残った関数のある行クリア

    エクセルのコピー元シート:100行10列 コピー先シート:ペーストする先 セル10 関数5 N行(例えば150行) コピーした後にデータが張り付いていない行に関数だけ残る(50行) この不要な行の関数を毎回手でクリアしています。 マクロで関数を消すにはどうすればよろしいかご教示願いたく、 よろしくお願いいたします。

  • エクセルで文字間隔・行間隔の調整の方法を知りたい

    Microsoft Excel 2010を使っています。 エクセルのセルの中での文章入力の際に文字間隔と行間隔を変更したいのですが、その方法が解りません。教えてください。

  • シートの必要な行だけをコピーしたい。

    シートの必要な行だけをコピーしたい。 sheet1にデータを取り込み、sheet2でvlookupの関数によりデータの抽出を行っています。sheet1に取り込まれる行は、2行~2600行と幅が広いので、現状はsheet2に関してMAX2600行分のvlookup関数を設定しているのですが、行が短い場合に処理時間がかかってしまい、効率がよくありません。sheet1に取り込まれた必要行分だけをsheet2にコピーペースト展開するにはどの様な対応をしたらよいか教えて 頂きたく。 1行目ににvlookupの関数が設定してあるとして、現状は下記の通り、マクロにて2600行分コピーペーストしてあります。 Range("A1:J1").Select Selection.Copy Range("A2:J2600").Select ActiveSheet.Paste

  • エクセルの行間隔について。

    エクセルである程度のセルを統合してそこに文を入れます。セルの書式設定で「折り返して全体を表示する」にします。ここで入力した何行かは行間隔を変更することはできないんでしょうか?2003です。

専門家に質問してみよう