- ベストアンサー
マクロ 結合セルへ値のみ貼り付けるにはどうしたらよいでしょうか。
マクロは初心者で、まだまだ勉強しているところです。 シート名「入出金履歴」のデータを顧客コードごとに分かれている別シートへデータを振り分けて貼り付ける、もしくは反映させたいのですが、貼り付け先のセルがシートの都合上、結合セルになっており、下記のマクロだと当然ながらエラーになってしまいます。結合セルをまず、解除してから貼り付けようと思ったのですが、うまくいかず、困っています。 コピー先の結合状態は、7行目から、列A:C、列D:E、列F:H と、3列になるように結合されています。結合されている行の終わりは、A:C(結合されている)列に「合計」の値が入っているセルの行、H列まで、3列になるよう結合されています。 解除する以外に、良い方法があれば是非教えていただきたいです。 よろしくお願いします。 Sub samplea() r1 = ActiveCell.Row r2 = r1 + Selection.Rows.Count - 1 Dim myRange As Range Dim s_no As String For i = r1 To r2 s_no = Cells(i, 2) Range(Cells(i, 4), Cells(i, 9)).Select Selection.Copy Sheets(Format(s_no)).Select Set myRange = Columns("a:c").Find(what:="合計") If myRange Is Nothing Then Debug.Print "Not Fount" Else myRange.Select Selection.End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlValues Application.CutCopyMode = False Sheets("入出金履歴").Select End If Next End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
n-junです。 Sub try() Dim r As Range, rs As Range Dim myRange As Range Dim L1 As Long, L2 As Long Dim i As Long L1 = ActiveCell.Row L2 = L1 + Selection.Rows.Count - 1 For i = L1 To L2 Set r = Cells(i, 4).Resize(, 3) Set myRange = Worksheets(CStr(Cells(i, 2).Value)).Range("A:A").Find(What:="合計") If myRange Is Nothing Then Debug.Print "Not Found" Else Set rs = myRange.End(xlUp).Offset(1, 0) rs.Value = r.Item(0).Value rs.Range("D1").Value = r.Item(1).Value rs.Range("F1").Value = r.Item(2).Value End If Next Set r = Nothing Set myRange = Nothing End Sub 一例としてご参考まで。 ⇒コード番号にあるシートは存在している事が条件。(エラー処理してません)
その他の回答 (2)
- a987654
- ベストアンサー率26% (112/415)
E1に写し基のデータがあり F1:F2(F1:E2結合でも同じ)が結合されたコピー先とします。 マクロ (データが文字でも数値でもa$:文字列変数でいけます) a$ = Cells(1, 5).Value Cells(1, 6).Value = a$ cells()内指定は行、列の順でA1を(1,1)と指定する。 2行目(コピー先は結合の左上のセルを指定する) これで2003エクセルでは動きますが、どうでしょうか?
お礼
私の説明が分かりにくかったと思いますが、ご回答いただきありがとうございます。参考にさせていただきます。
- n-jun
- ベストアンサー率33% (959/2873)
どのようなデータの並びから、どのような条件で値を入れたいのかが見えないのですが。 その辺りを提示されてみたら如何かと思います。
補足
すみません。説明が不十分でした・・・。 まず、入出金履歴シートには B列(コード番号)・C列(顧客名)・D列(入金日)・E列(入金額)・F列(備考) という列で構成されております。 コード別に分かれた各シートにはそれぞれ 結合A:C列(入金日)・結合D:E列(入金額)・結合F:H列(備考)となっております。 「入出金履歴」シート上で、振り分けたい日付範囲を選択し、その同行のコードと一致するコード名のシートにそれぞれ入金日・入金額・備考の内容を順に貼り付けるということがしたいのです。貼り付ける場所の条件として、A列上の「合計」の値が入っているいるセルより上での最終行を見つけて、その下にデータを順に貼り付けます。 説明が分かりにくく、申し訳ありません。 まだ分かりにくいようであれば、また補足しますのでよろしくお願いします。
お礼
本当にご丁寧教えてきただきありがとうございます。とても参考になりましたし、勉強にもなりました。動作も速いし、とても助かりました。 私の説明が不十分のところがありましたが、対応していただいてとてもうれしく思います。