プロが教える店舗&オフィスのセキュリティ対策術

エクセルに関して質問させてください。

エクセルに25行間隔で、行ごとをコピーしたいです。

その行は前の24行分の平均値を出したもので関数が入っています。

全部で5万行あるため、平均値の行だけを抽出する法則があればと思いました。

お分かりになる方いらっしゃいましたら教えてください。

よろしくお願いします。

A 回答 (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セルの右下隅の■をクリックして右横方向にドラッグコピーすれば該当するすべての行のデータが表示されることになりますね。
    • good
    • 1

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
    • good
    • 0

時間掛かりそう...



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
    • good
    • 0

その対象となる行全体が黄色で塗られているとして、



1. [Ctrl]+[F]検索
2. 書式▼ 書式 パターン 黄色 [OK]
3. [すべて検索] - [Ctrl]+[A]すべて選択(黄色で塗られた行が選択される
4. [閉じる]
5. [Ctrl]+[C]コピー
6. 別シートのA1セルを選んで [Ctrl]+[V]貼り付け
「エクセルで25行間隔で行をコピーする方法」の回答画像2
    • good
    • 0

表をまず、新規シートに、形式を選択して貼り付け→値で貼り付けます。



A列を選択し、右クリック挿入で1列、挿入し、
A1のセルに1、A26のセルに2と入力し、
A1:A50まで選択し、下へ5万行までオートフィル

表全体を範囲選択→データ→並べ替え
A列をキーにして、昇順で並べ替えします。

A列に数字がある部分が平均値の行です。

この回答への補足

早々の御解答ありがとうございます。
そんな方法があるとは思いつきませんでした。

ただ折角教えていただいたのに申し訳ありません。
今やってみたのですが、最初のほうは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

度々の質問申し訳ありまえんが、黄色で塗られた部分を抽出する方法ありましたら教えていただけませんでしょうか。
よろしくお願いします。

補足日時:2012/09/13 17:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています