- ベストアンサー
EXCELで指定した範囲の切り取り貼り付け
Excelで シート1のA1~E1000までデータがあります。 B列には0~1500の数値データがあり昇順で並んでいます。 このB列のデータの700~1000の数値データのA~E列全ての範囲を「切り取り」・シート2に「形式を指定して貼り付け」(値)という作業をマクロにてできませんか? 尚、1つセルが下がるごとに1数字があがるとは限りません。 大変困ってます。詳しい方ご教授ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
思いつくままのロジックでやって見ました。 別に難しいことはしてません。 (例データ)Sheet1のA1:E11に a 1 c d e a 2 c d e a 3 c d e a 4 c d e a 5 c d e a 6 c d e a 701 c d e a 812 c d e a 923 c d e a 1002 c d e a 1302 c d e (コード)標準モジュールに Sub test02() d = Range("b1").CurrentRegion.Rows.Count MsgBox d '-----700を越えた行を見付ける For i = 1 To d If Cells(i, "B") > 700 Then x = i Exit For Else End If Next i '-----1000を越える直前の行を見つける m = x For i = x To d If Cells(i, "B") > 1000 Then y = m Exit For Else m = i End If Next i '----コピーと貼りつけ MsgBox x MsgBox y Range(Cells(x, "A"), Cells(y, "E")).Copy Worksheets("sheet2").Activate ActiveSheet.Paste End Sub を貼りつけて実行。 (結果) Sheet2のA1:E3に a 701 c d e a 812 c d e a 923 c d e となりました。 Msgboxは確認のため入れていますが、省いてください。
その他の回答 (1)
- free-goo
- ベストアンサー率18% (28/155)
もう1列使用するのはダメですか もし可能なら 例.F列に 計算式を入れる。 =if(B1<=699,"",if(B1>=1001,"","*"))と入れる B列に入っている内容が 700から1000(数値タイプ)であれば「*」印がF列に表示される 上記以外であれば、空白となる。最終行まで 計算式をコピーして 後は「オートフィルター」を使用して「*」印をチョイスしてAからE列全体をコピーすればいけると思うのですが どうでしょうか
お礼
どうもありがとうございました。 ひとつ(700-1000のデータ)のデータを貼り付けるだけならいけたんですが700-1000のデータは複数有りそれを積み重ねたところセル位置が1800を超えたあたりで貼り付けができなくなりました。 しかしNo2の方の回答で解決しました。 どうもありがとうございました。
お礼
どうもありがとうございました! 若干の変更は必要でしたが、完璧にできました。 ありがとうございました。 わたしにとっては難しい記述でしたがなんとかなりました。