こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのセルを参照して別シートに張り付ける

こんにちは。

エクセルのsheet1とsheet2があり、sheet1のセルに入力されている文字や数値をsheet2にコピーしたいと思っています。ただし、コピー先のsheet2のセルの値は、sheet1を参照するだけでなく文字や数値として表示できないかと悩んでいます。

図で説明すると

 (sheet1)                →           (sheet2)
  A    B    C     D           A     B    C     D
1あああ  10  いいい  えおう        1いいい  えおう  10    あああ
2あああ  10  いいい  かけこ       2いいい  かけこ  10    あああ
3あああ  10  いいい  みまつ       3いいい  みまつ  10    あああ 
4あああ  10  いいい  さぐも        4いいい   さぐも   10    あああ

また、上記のようにsheet1とsheet2の列は同じ場所ではありません。

このような作業を1回で行うことはできるのでしょうか?
よろしくお願いします。

投稿日時 - 2011-11-16 11:31:24

QNo.7136304

困ってます

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

Sub Macro1()
Sheets("Sheet2").Select
Sheets("Sheet1").Columns("A:D").Copy
Columns("A:A").PasteSpecial Paste:=xlPasteValues
Columns("B:B").Cut
Columns("E:E").Insert Shift:=xlToRight
Columns("A:A").Cut
Columns("E:E").Insert Shift:=xlToRight
Range("A1").Select
End Sub

Sheet2を開いてからSheet1のA~D列をSheet2にコピー(値)して
B列、A列を右にシフトして移動させています。

投稿日時 - 2011-11-16 12:52:32

お礼

有難うございました。
非常に助かりました。

投稿日時 - 2011-11-16 15:07:21

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

シート2のA1セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。

=IF(OR(ROW(A1)>COUNTA(Sheet1!$A:$A),COLUMN(A1)>3),"",INDEX(Sheet1!$A:$D,ROW(A1),IF(COLUMN(A1)=1,3,IF(COLUMN(A1)=2,4,2))))

式の意味はシート1のA列に文字が入力されていますがその文字の入力されている行がシート2に下方としている行よりも多くなれば、あるいは、列の数が4以上になればセルを空白にしなさい。それ以外のばあにはシート2のA列にはシート1の3列目を、B列にはシート1の4列目をC列にはシート1の2列目を表示しなさいということになります。

投稿日時 - 2011-11-16 13:24:04

お礼

有難うございました。
非常に助かりました。

投稿日時 - 2011-11-16 15:07:05

ANo.1

>作業を1回で行うことはできるのでしょうか?
 ⇒マクロ(VBA)ならば可能です。

  拘りが無ければ、関数で対応後、形式を選択して貼り付けの値でデータを
  置き換える方法になります。
 (1)Sheet2には関連付け先のセルを入力、下方向にコピー
    仮にSheet2のA列は、=IF(Sheet1!C1<>"",Sheet1!C1,"")
    B1~D1も同様に設定後、A1:D1を選択して下方向にコピー
 (2)Sheet2の数式範囲を選択、コピー→形式を選択して貼り付け→値を選択→OK  

投稿日時 - 2011-11-16 11:49:49

お礼

有難うございました。
非常に助かりました。

投稿日時 - 2011-11-16 15:07:32

あなたにオススメの質問