プロが教えるわが家の防犯対策術!

 
エクセル2010を使っております。

例えば、
A列とB列にデータが入っており、B列のデータをそのままA列に平行移動で上書きコピーしたいのですが、
条件がありまして、
特定の行(ここでは10行目から15行目としますが)を非表示状態にしております。
この非表示行を飛ばして上書きしたいのです。

ですから、結果としては
・A列の1~9行目まではB列の1~9行目のデータが入っていて
・A列の10~15行目までは元のA列の10~15行目までのデータが入っていて
・A列の16行目以降にはB列の16行目以降のデータが入っている、
ということになります。

可視セルを使ってもみたのですが、
どうしてもA列の10行目以降にB列の16行目以降のデータが入ってしまいます。

どのように処理したらよいかアドバイスよろしくお願いします。

A 回答 (5件)

見せたくない行を非表示にしたまま、B列の貼り付けしたい範囲を選択→Alt+;→「=」と入力し、十字キーの「←」(左向き矢印)を押す→Ctrl+Enter



非表示行を表示させ、B列をコピー→値で貼り付け

で如何でしょうか?
    • good
    • 0
この回答へのお礼

キーの使い方、特にCtrl+Entがポイントですね。
かなりシンプルに操作できます。
ありがとうございました。

お礼日時:2014/02/18 21:48

こんばんは!



先を読みすぎかもしれませんが・・・
一般的な操作として行が非表示になるといえば、オートフィルタがすぐに思い浮かびます。
(もちろん手作業で非表示にすることもあるとは思いますが)

>非表示状態にしております。
はオートフィルタである行が非表示になっているという解釈で、VBAでの一例です。

オートフィルタを設定する場合は1行目は何らかの項目行が必要ですので、
データは2行目以降にあるとしています。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペースト → Excel画面に戻り、マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim i As Long
If ActiveSheet.FilterMode = True Then
For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row '←B列で最終行を取得
If Rows(i).Hidden = False Then
Cells(i, "A") = Cells(i, "B")
End If
Next i
End If
End Sub 'この行まで

※ オートフィルタでない場合は無視してください。m(_ _)m
    • good
    • 0
この回答へのお礼

こちらはオートフィルタの場合ですね。
私も少しだけVBAをやっているのでとても勉強になります。
参考にさせていただきます。
ありがとうございました。

お礼日時:2014/02/18 22:00

>どのように処理したらよいかアドバイスよろしくお願いします。


1~9行目と16行目以降の2回に分けてコピーするのが最もシンプルで分かり易い方法です。
非表示セルを跨がると非表示セルを除いてコピーできません。
範囲選択後にAltキー+;キーで非表示領域を除いたデータをコピーの操作でクリップボードに取り込めますが貼り付けのときに2つの領域へ跨ることができませんので目的に合いません。
B10~B15がブランクの場合は貼り付け時に空白を無視する方法で貼り付ければ目的に合います。
作業用の列を使えれば次の式で値を選別すればコピー可能ですが、2回に分けてコピーする方が手っ取り早いでしょう。

=IF(AND(ROW()>9,ROW()<16),A5,B5)

尚、オートフィルでコピーすると非表示のセルにもコピーされますので、上記の式を下へ必要数だけオートフィルでコピーしてください。
作業用の列をコピーしてA列へ値の貼り付けを行えばよいでしょう。
    • good
    • 0
この回答へのお礼

やはり別列を利用して加工が必要になるのですね。
参考になりました。
ありがとうございました。

お礼日時:2014/02/18 21:53

簡単な方法:


A1に
=B1
と記入,A1をコピーしてA列の「見えてるセル」にふつーに貼り付け
状況に応じてA列をコピー,その場で形式を選んで値のみ貼り付けて完成。



別の手:
B1からB9まで,B列のデータを記入する
B10からB15まで,B列は「ホントに何も入ってない」空っぽの状態にする
B16以下にまた続きのデータを記入する

B1からB20までとかを「非表示とかしないで」全部まとめてコピーする
A1を選ぶ
形式を選んで貼り付けの「空白を無視する」にチェックしてそのまま上書き貼り付ける。

B列を「壊せない」なら,勿論B列から一度必要なネタだけをC列とかに転記して,そちらを使う事でも構いません。
    • good
    • 0
この回答へのお礼

別セルに転記して空白などの加工を加えるという方法もありですね。
参考になりました。
ありがとうございました。

お礼日時:2014/02/18 21:52

 まず、適当な使用していない列(ここでは仮にD列とします)の10行目~15行目に、「1」でも「あ」でも何でも良いので、何らかの値を入力して下さい。


 この時、B10~B15のセル範囲を非表示としている方法が、もしも、セルの書式設定の表示形式を

;;;

とする事によるものである場合には、D列の(B列にデータが入力されている行範囲内における)全てのセルに、前もって次の様な関数を入力しておきますと、非表示の範囲が変更になった場合においても、一々、D列に値を入力しておく手間が省けます。

=IF(CELL("format",INDEX($B:$B,ROW()))="H",TRUE,"")

 次に、以下の様な操作を行って下さい。


[ホーム]タブをクリック
  ↓
D列全体を選択
  ↓
[編集]グループの[並べ替えとフィルター]をクリック
  ↓
現れた選択肢の中にある[フィルター]をクリック
  ↓
D1セルの所に現れた「▼」ボタンをクリック
  ↓
現れた選択肢の中にある[(すべて選択)]の所にあるチェックを外す
  ↓
選択肢の中にある[(空白セル)]の所にあるチェックを入れる
  ↓
[OK]ボタンをクリック
  ↓
B列全体を選択
  ↓
オートフィルを使用して、B列のデータをA列にコピー
  ↓
[編集]グループの[並べ替えとフィルター]をクリック
  ↓
現れた選択肢の中にある[フィルター]をクリックする事で、フィルターを解除
「エクセル 非表示行を上書きせずにコピーす」の回答画像2
    • good
    • 0
この回答へのお礼

図解も入れていただき感謝いたします。
いろいろと応用ができそうです。
ありがとうございました。

お礼日時:2014/02/18 21:49

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