- 締切済み
excelでボタン一つでシートからシートへのコピーの方法。
例) シート1に日付と商品名と単価と個数、それに特別の項目があります。 下図のような表。 =============== 日付 商品 単価 個数 4/1 A 100 1 特別 4/1 D 0 3 ←1行空いてます。 4/2 B 120 2 4/2 C 130 1 ←1行空いてます。 4/3 A 120 1 4/3 C 130 3 特別 4/3 D 0 5 ←1行空いてます。 4/4 定休日 : : 4/30 =============== このような表があるとします。 これをボタン一つでシート2にコピーしたいのです。 (簡単に言えばシート1がデータ。シート2が印刷用です。) <条件> シート2のセルの大きさは変えられませんが、それ以外はOK シート2にコピーする際に日付指定が出来ること。(1日から5日までのデータを印刷するなど。) 長々とした文になりましたが、よろしくお願いします。 また、わからないことがあれば補足いたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
一例として、下記のようなVBAプログラムが必要かと 考えます。お望みならコード例を作りますが。 >ボタン一つで エクセルVBAでプログラムを組む必要があると思います。 >このような表があるとします 日付は、A列にあるとして、日付順に上から下の行へ例外無く並んでいると仮定して良いですか。即ちスペースと特別行以外は日付け順に並んでいますか。 また日付けは2003/4/10のように正式な日付けで 入力されていますか。文字列ではないでしょうね。 >シート2のセルの大きさは変えられませんが この意味を理解できませんでした。なぜそう注記が必要なのかが。 >コピーの方法 私の考えでは、「抜き出しする方法」のタイプの問題です。VBAではセルの値を他シートのセルに代入すれば良いのでコピーと言う気がしません。 ロッジックは (1)Sheet2のセルA1、B1に、抜き出すスタート日と終わり日を日付けで入れるものとする。 Sheet2の第2行以下の行にコピーするものとする。 (2)第1行から最終行までに亘って下記を行う。 (3)A列がスペースか「特別」なら、「コピー中のフラグ」がONの時は、Sheet2にその行をコピーする。 「コピー中のフラグ」が何をするためかと言うと、対象外の日付け行の間の、スペース行や「特別」行を拾わないようにするためです。下記(5)でセットします。 この際にSheet1のデータが日付け順になってないと 都合が悪いのです。 (4)それ以外だと日付けが入っていると見做し、Sheet2のA1より等しいか大きく、B1より等しいか小さい日付けか判別する。 (5)(4)の条件に合う行は、Sheet2へSheet1のその行をコピーする。(A列からD列までを値を代入) 「コピー中のフラグ」と言う変数をプログラム内に設け、それをON(例えば値1)にする。 (6)Sheet1、Sheet2の次ぎの行へ行く。 (7)(4)の条件に合わない行は、次ぎの行を判別しに行く。「コピー中のフラグ」と言う変数には、合わない行では0をセット。 (8)Sheet1にボタンを1つ貼りつけ、上記プログラムは、ボタンのクリック・イベントで走るようにする。
お礼
なんとか解決できそうです。 変な質問ですいませんでした。