新しく質問する

Excelにてシート1のデータをシート2の集計表に反映させるには?Part2

役に立った:2件
  • 質問者:guchi_yama
  • 投稿日時:2007/09/13 11:34
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

昨日、下記のようなシート1の入力用の表で
X列のX1の月を変更するごとに
月毎にしたシート2の集計表のX1で変更した月列へ
コピーする方法を教えて頂き、
無事完成させることが出来ました。
しかし、新たな問題が発生して困っています。
前回も記載しましたが、シート1はこうです。

    A ・・    X    Y  ・ ・ ・
1          4月
2 大阪支店   220万

8 奈良支店   150万

14 京都支店  180万

20 神戸支店  200万

26 滋賀支店  110万

32 岐阜支店  140万

38   計      1000万



そして、シートコピーする為のプログラムはこうです。

Private Sub CommandButton1_Click()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim r1 As Range, r2 As Range

Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")

With ws1
Set r1 = .Range(.[X2], .Cells(Rows.Count, "X").End(xlUp))
End With

Set r2 = ws2.Rows(1).Find(What:=ws1.Range("X1").Value, LookIn:=xlValues, _
LookAt:=xlWhole)

If r2 Is Nothing Then
MsgBox "見つかりませんので" & vbLf & "終わります。"
Exit Sub
End If

r2.Offset(1).Resize(r1.Rows.Count).Value = r1.Value
End Sub

お礼をした時点では、出来ませんでした。と記載したのですが
それからさらに何度も取り組んだ結果、無事完成する事が出来ました。
(昨日ご回答頂いた方、大変ありがとうございました。
この場をお借りしてお礼申し上げます。)
しかし、ここからが問題なのですが、
最後のX列にもう1列追加し、2行を一緒にコピーしたいのです。
X列の3行目に18日、Y列の3行目に20日
と勤務日数を追記したいのです。
月、金額部分はX列とY列を行ごとにセル結合しているのですが、
上記の"X"というプログラムでも
X列に記載した、18日はチャントコピーされます。
しかし、結合していないY列の20日という日付はコピーされません。
"X"の部分を"X:Y"としてみたり、
自分なりに色々やってみましたが、出来ませんでした。
どうやれば2列のコピーが可能なのでしょうか?
前回同様、シート1,シート2共に行,列は同じ列間、同じ行間です。
説明不十分で申し訳ないのですが、もしお手数でなければ、
前回の記載文を見ていただけると幸いです。
タイトルは今回と同様です。(勿論Prat2はつけてません)
何卒宜しくお願い致します。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:2件)
  • 参考になった:0件

No.2ベストアンサー20pt

  • 回答者:n-jun
  • 回答日時:2007/09/13 18:02

>結合していてもコピー出来る方法は無いでしょうか?
まず、
r2.Offset(1).Resize(r1.Rows.Count,2).Value = r1.Value
                     ↑
この2を追加しないと、結合セルとX列のみしか値は代入されない。
Y列の値は空白になります。

>シート2の1行目は、4月(空き)5月(空き)・・・となってるのでしょうか?(2列1組)
ここの状態によるのかも、知れないですね。
シート1と同じかどうかですね。

こちらでは、4月・5月が2列に結合されていても(X1:Y1)
別々でも(X1)値はシート2にきちんと入りました。

通報する

この回答へのお礼

了解しました^^
では、また私の早とちりというか、焦ってどこかの入力が
間違えているのでしょうね;;
ではでは、ゆっくり試してみます。
昨日に引き続き、本当にどうもありがとうございました。
また、何かありましたら宜しくお願い致します。

  • 参考になった:0件
  • 回答者:n-jun
  • 回答日時:2007/09/13 15:40

シート2の1行目は、4月(空き)5月(空き)・・・となってるのでしょうか?(2列1組)
であれば、
>Set r1 = .Range(.[X2], .Cells(Rows.Count, "X").End(xlUp))
Set r1 = .Range(.[X2], .Cells(Rows.Count, "Y").End(xlUp))

>r2.Offset(1).Resize(r1.Rows.Count).Value = r1.Value
r2.Offset(1).Resize(r1.Rows.Count,2).Value = r1.Value
では、どうでしょうか?

通報する

この回答へのお礼

昨日はありがとうございました。
あれから、さらに何度かやってみて分かったのですが、
月の部分を形式表示のユーザー定義で『 ##"月" 』と
入れていたのがまずかったようで、
普通に"4月"とか"5月"と入力すれば出来ました。

あと、今回なのですが、お答えの式にやり直したところ、
3行目の2列に区切った勤務日数を入れたセルまではコピーされるのですが、
その下が空白になってしまいます。
たぶん2列を結合しているからだと思います。
だからX列に入力された金額を読み取らず、
その後ろのY列の空白を返しているのだと思います。
3行目以降で、結合していてもコピー出来る方法は無いでしょうか?

  
このQ&Aは役に立ちましたか?(役に立った:2件)

このページのトップへ

Facebook公式ページ

公式Twitter