- ベストアンサー
エクセルで非表示行をうまくコピーする方法は?
お世話になります。 エクセルで複数の項目についてデータ集計シートを作ってます。各項目の入力条件は一条件一行です。つまり一つの項目について複数行を使います。 項目毎に条件の数が違うので項目によって使う行数が異なります。 集めたデータはCSVに出力してアクセス等で分析、データベース化をしたいのですが、項目毎に行数が異なるということはCSVのフォーマットが変わってしまうということなので、最大条件数を有する項目の行数を確保して条件が少ない項目は下の方が空行になるようにします。 空行が多いと見づらいので空行は非表示にします。 ここからが問題で、このデータシートをテンプレート化し、不要な項目は削除、2回以上使うものは行を適宜挿入、コピペして使うことにしたいのですが、非表示にした部分がコピーされません。(非表示部分は下の方なので範囲指定からはずれてしまいます) どうすれば良いでしょうか? 一度表示にしてコピペすれば問題ないのですが、入力作業は特定多数の人にお願いするので、あまり複雑な作業はさせたくありません。 はじめからアクセスを使えばいいじゃないかという意見もあろうかと思いますが、世の中アクセスを使いこなせる人ばかりじゃないので、入力作業はエクセルで手軽に・・・と考えています。 説明が長くなりましたがよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一度表示してコピーして非表示にするマクロを 入れておけばどうでしょ?こんなかんじ Set u = ActiveSheet.UsedRange For i = u.Row To u.Rows.Count If Rows(i).EntireRow.Hidden = True Then If IsEmpty(h) Then Set h = Rows(i) Else Set h = Union(h, Rows(i)) End If End If Next h.EntireRow.Hidden = False u.Copy h.EntireRow.Hidden = True
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の中身が把握できません。 (1)>非表示にした部分がコピーされません 行を非表示にして、その後その範囲を含めて、コピー貼り付けすると、貼り付け先では、元の非表示の行も表示されてしまうようですが。 (2)今後の問題として、項目を縦(行方向)に並べているようですが、それは避けて、列方向に並べましょう。エクセルの 標準は、「データベース」(エクセルの術語)でもそのように約束事になってます。 ●長文で説明するより、モデル例を上げて見てはどうでしょか。 直接関係ない記述で、質問が長くなってませんか。
- yambejp
- ベストアンサー率51% (3827/7415)
あ・・・ #1です。 非表示行が無い場合を想定してなかったのでちょっと修正 Set u = ActiveSheet.UsedRange For i = u.Row To u.Rows.Count If Rows(i).EntireRow.Hidden = True Then If IsEmpty(h) Then Set h = Rows(i) Else Set h = Union(h, Rows(i)) End If End If Next If IsEmpty(h) Then u.Copy Else h.EntireRow.Hidden = False u.Copy h.EntireRow.Hidden = True End If End Sub
お礼
まとめてのお礼で申し訳ありませんが、ご回答ありがとうございます。 No.3の方が言われるように1データ一行というのはデータベースの基本だと言うことは重々承知の上で顧客の要望上そういうフォーマットにせざるを得ないので質問させていただきました。 CSVデータの取り込み部分を非表示列にまとめるなど工夫して対応していきたいと思います。