• ベストアンサー

エクセルシート内で必要な表を取り出すには?

タイトルのとおりです。 エクセルシート内に社内で電子印を押しています。 書類の電子化をしているわけですが、 その中の一つの表を取り出そうとすると、 1.シートをコピーした上で、 取り出そうとする表以外の全ての表を削除する 2.取り出そうとする表をコピーして、別で立ち上げている エクセルシートへペーストする 以上の2つの方法が考えられますが、 1.は、冒頭の電子印や棒線が大量に残ってしまい、 それをセルを削除する方法ではすぐに削除することが出来ず、 たいへんな手間がかかってしまいます。 2.は、縦横のセルの大きさがバラバラになってしまい、 元々の形が狂ってしまい、修復にたいへんな手間がかかって しまいます。 エクセルをペーパーレスの手段としてお使いの方、 または、お詳しい方、この場合、どのようにして必要な表だけを 取り出すことが一番スムーズな方法なのでしょうか? どうか教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

1.の手段の対処方法です。 描画ツールを表示させているとマウスポインタのようなアイコンがあるはずですのでそれをクリック(アイコンが凹みます)。 この状態だと、マウスでの範囲選択は「セル」を意識せず、「電子印や棒線」などのオブジェクトを選択できます。 ひとつひとつを選択するのではなく、「そのあたり」と大まかなドラッグで削除したいオブジェクトを選択できます。 削除をおこなったら凹んだままのアイコンを再度クリックして元に戻してください。マウスでの範囲選択は「セル」を意識するモードに戻ります。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

CTRL+SHIFT+* で範囲を指定できる便利な仕組みがあります。 (VBAならCurrentRegionに当たるのかな) これが使えるためには、行は1行以上、列も入れつ以上の空白の行や列で、「表」が離れている必要があります。 ーー このルールを守って表を分けておけば、表の任意のセルをクリックし CTRL+SHIFT+* で範囲を指定できる。 CTRL+CでコピーしCTRL+Vで他シートに貼り付けも簡単。 -- VBAで考えるときもCurrentRegionガ使えるとコードが簡単。 ただこの質問には、人間が操作するときはよい(判る)が、表をどう特定するかのことが書いてない。プログラム経験が無いのだろうが。1シートに、表が多数ある場合、1つを特定するのは、プログラムを考えるときはどうするか。タイトル見出しやその他など。絶対すっきりしたものは、表名やIDを何処かに持つ必要があろう。

job_plus
質問者

お礼

ご回答をいただきました、皆様。ありがとうございました。 たいへん参考になりました。

回答No.3

元シート内にある複数の表の位置関係はどうなっていますか? コピーしたい表の左または右に別の表が無い、つまり、表が縦方向に だけ並んでいるのでしたら、行範囲で表を選択してコピーして別シー トに貼り付け、更に「形式を選択して貼り付け」から「列幅」を実行 すればよいと思います。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

確かに、「全てを貼り付け」なら、セル幅もなんとかせんかい!と思った事はありますが、都度地道に修正しておりました。 試しにマクロをこしらえてみました。選択範囲をinput boxから指定した先(別シートも可)に貼り付け、セルの幅、高さを元の表に合わせます。(既存のデータに影響を及ぼしても関知いたしません) お役に立てば幸いです。 Sub test() Dim targetRange As Range Dim destRange As Range Dim rowInfo() As Variant Dim columnInfo() As Variant Dim i As Long, j As Long On Error Resume Next Set targetRange = Selection If targetRange Is Nothing Then Exit Sub On Error GoTo 0 Set destRange = Application.InputBox(Prompt:="複写先セルを選択してください。", Type:=8) If destRange.Cells.Count > 1 Then Set destRange = destRange.Cells(1) ReDim rowInfo(1 To targetRange.Rows.Count) ReDim columnInfo(1 To targetRange.Columns.Count) For i = 1 To targetRange.Rows.Count rowInfo(i) = targetRange.Rows(i).RowHeight Next i For j = 1 To targetRange.Columns.Count columnInfo(j) = targetRange.Columns(j).ColumnWidth Next j targetRange.Copy destRange Set destRange = destRange.Resize(targetRange.Rows.Count, targetRange.Columns.Count) For i = 1 To targetRange.Rows.Count destRange.Rows(i).EntireRow.RowHeight = rowInfo(i) Next i For j = 1 To targetRange.Columns.Count destRange.Columns(j).EntireColumn.ColumnWidth = columnInfo(j) Next j Sheets(destRange.Parent.Name).Activate End Sub

関連するQ&A

専門家に質問してみよう