人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルに関して質問です。
添付画像をご参照ください。このファイルをファイルAとします。
ファイルAの赤で塗りつぶした箇所には関数が、入っています。
そして白地の箇所に数値を貼り付けたいと思っています。

この画像とまったく同じファイルがあり、このファイルをファイルBとします。
このファイルBには、ファイルAの白地の所の数値が入っています。
順番はファイルAと同じです。
ただし、ファイルBには、ファイルAの赤い部分(関数が入っている部分)がありません。
行・列ごと削除されています。
このファイルBの数値を、ファイルAに簡単に貼り付ける方法を探しています。

ファイルBをコピーして、ファイルAの赤い部分を非表示にして、貼り付けても
うまくいきません。
何か良い方法はないでしょうか?



●質問者: martytaka
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:エクセル コピー ファイル 画像 関数
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● きゃづみぃ
●20ポイント

添付の画像がないですね。

シートごと コピーして ファイルAに入れたら 入るのでしょうか?

また、その入ったシートのその部分を コピーできるのでしょうか?

http://q.hatena.ne.jp/1268807570

◎質問者からの返答

しまった・・・


2 ● SALINGER
●20ポイント

添付画像がありませんが、だいたいやりたいことはわかります。

ファイルB全体をコピーします。

ファイルAのA1を選択して、形式を選択して貼り付け→空白セルを無視するにチェックを入れて貼り付ければできます。

http://q.hatena.ne.jp/

◎質問者からの返答

ファイルBには、ファイルAでは、赤で塗りつぶした箇所(関数がある箇所)が無いのです。

空欄ではなく、行ごと削除されていて、詰めてしまってあるのです。

なので、無理なんじゃないでしょうか。。

どうでしょう?

画像も添付しました。

http:/f.hatena.ne.jp/martytaka/20100317163000

よろしければ2回投稿できますので、ご投稿ください。


3 ● Km1967
●20ポイント

行ごと削除されていて、詰めてしまってある

逆の発想だが、ファイルBにファイルAの関数部分をコピーして張り付けるというのはどうじゃ?


まったくの余談だが、Excelの場合はファイル単位をブック、ブックの中には1あるいは複数のシートが含まれておる。ファイルAやファイルBという表現では足りないのじゃ。 関数部分以外にブック内の他のシートとの連携や、場合によってはマクロなども関係してくる可能性があるのじゃ。気をつけよ。

画像がまだ手元にあるならば、はてなフォトライフや、無料のHPスペースなどにアップロードしてURLをコメント欄に書くなりすれば良いと思うぞ。

http://f.hatena.ne.jp/guide

◎質問者からの返答

ありがとうございます。

画像は

http://f.hatena.ne.jp/martytaka/20100317163000

です。

ファイルBでは、この画像の白い部分のみが詰めて、表示されております。

また、他シートとの連携はないです。

よろしければ2回投稿できますので、ご投稿ください。

確かに、ファイルBに行の挿入や列の挿入を繰り返し、

ファイルAと同じ形にして、「空白セルを無視する」でコピペなら可能だと思いますが

画像より実際は、赤い部分が多く複雑なので、ちょっと面倒です。。


4 ● SALINGER
●20ポイント

非表示になっていると直接コピーできなければ、できるマクロでも作ってみようということでVBA。


1 ファイルAで赤い部分を非表示にする。(手動でできるようなので)

2 ファイルBで左上から表全体を選択。

3 Copy2を実行。

4 非表示を元に戻す。


※コード中ファイルAはSheet1にしています。実際のファイル名に変更してください。

Sub Copy2()
 Dim edRow As Long
 Dim edColumn As Long
 Dim r As Long
 Dim c As Long
 Dim i As Long
 Dim j As Long
 
 With Worksheets("Sheet1")
 r = 1
 For i = 1 To Selection.Rows.Count
 If Not .Rows(r).Hidden Then
 c = 1
 For j = 1 To Selection.Columns.Count
 If Not .Columns(c).Hidden Then
 .Cells(r, c).Value = Cells(i, j).Value
 Else
 j = j - 1
 End If
 c = c + 1
 Next j
 Else
 i = i - 1
 End If
 r = r + 1
 Next i
 End With
End Sub

http://q.hatena.ne.jp/

◎質問者からの返答

3 Copy2を実行。

この実行の仕方が分からないです。。。

2回投稿くださって構わないので、このやり方を。。涙


5 ● p332
●20ポイント ベストアンサー

赤い部分を飛ばしてデータをコピーするマクロを記載します。

とりあえず下記手順を実行すればマクロが実行されます。

0.マクロが使えるようセキュリティ設定をする(手順:http://allabout.co.jp/computer/msexcel/closeup/CU20070228A/)。

1.適当なフォルダを用意し、

・ファイルA(ファイル名を「ファイルA.xls」とする)

・ファイルB(ファイル名を「ファイルB.xls」とする)

・マクロ用の新規ファイル

の3つのファイルを入れる

2.マクロ用ファイルを開き、Alt+F11を押す

3.VBAの編集画面が表示されるので、メニューから「挿入」-「標準モジュール」を選択

4.「標準モジュール」に下記のコードをコピーペースト

5.F5を押す

通常のエクセルの画面のメニューからも実効できます。

(シート上のボタンを押すと実行されるように設定したり、ショートカットに登録したりもできます)



Sub CopyData()

 Dim RngA As Range
 Dim RngB As Range
 
 Dim WB_A As Workbook
 Dim WB_B As Workbook
 
 
 fldrPath = ThisWorkbook.Path & "\"
 
 Set WB_A = Workbooks.Open(fldrPath & "ファイルA.xls")
 Set WB_B = Workbooks.Open(fldrPath & "ファイルB.xls")
 
 Set RngA = WB_A.Sheets(1).Cells(2, 2)
 With WB_B.Sheets(1)
 Set RngB = .Range(.Cells(2, 2), .Cells.SpecialCells(xlCellTypeLastCell))
 End With
 
 vals = RngB.Value
 
 r = 0
 For i = 1 To UBound(vals, 1)
 r = r + 1
 Do While RngA(r, 1).Interior.ColorIndex = 3 And RngA(r, 2).Interior.ColorIndex = 3
 r = r + 1
 Loop
 
 c = 0
 For j = 1 To UBound(vals, 2)
 c = c + 1
 Do While RngA(r, c).Interior.ColorIndex = 3
 c = c + 1
 Loop
 
 RngA.Cells(r, c).Value = vals(i, j)
 
 Next
 Next
 
 WB_B.Close False
 
End Sub
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ