Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


249 / 13645 ツリー ←次へ | 前へ→

【81303】別シートへ転記したい場合 [名前なし] 20/5/27(水) 19:43 質問[未読]
【81307】Re:別シートへ転記したい場合 マナ 20/5/28(木) 19:41 発言[未読]
【81311】Re:別シートへ転記したい場合 [名前なし] 20/5/29(金) 13:20 お礼[未読]
【81312】Re:別シートへ転記したい場合 マナ 20/5/29(金) 18:55 発言[未読]
【81314】Re:別シートへ転記したい場合 [名前なし] 20/6/1(月) 16:11 お礼[未読]
【81318】Re:別シートへ転記したい場合 マナ 20/6/2(火) 20:52 発言[未読]
【81323】Re:別シートへ転記したい場合 [名前なし] 20/6/3(水) 16:23 お礼[未読]

【81303】別シートへ転記したい場合
質問  [名前なし]  - 20/5/27(水) 19:43 -

引用なし
パスワード
   現在 シート1『入力』シート2『データ』として転記の自動VBAを作ってみたいと思っています
A〜ANの行の転機です 
※毎回入力シートに入る件数は変わります

下記ですと A2からAN2に入力した分のみしか反映できないんです…
入力シートの最初から最後まで転記したい場合は どこを変更したらいいのでしょうか‥‥ 

Sub データの転記()
  Dim Sh1 As Worksheet
  Dim Sh2 As Worksheet
  Dim myRow As Long
   Set Sh1 = Worksheets("入力")
   Set Sh2 = Worksheets("データ")
   
   'データ転記
     With Sh2
        myRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Range(.Range("A" & myRow), .Range("AN" & myRow)).Value = Sh1.Range("A2:AN2").Value
        .Range("AN" & myRow).Value = Sh1.Range("C2").Value * Sh1.Range("AN2").Value
      End With
      With Sh1
        .Range("A2:AN2").ClearContents
      End With

End Sub

また、転記をしたデータでオートフィルターを使った場合 重複している名前をカウントしないで集計する方法はありますでしょうか

=SUMPRODUCT(1/COUNTIF(A1:A15,A1:A15))を使用してみましたが可視の部分以外も
カウントしてしまうんです…

【81307】Re:別シートへ転記したい場合
発言  マナ  - 20/5/28(木) 19:41 -

引用なし
パスワード
   ▼[名前なし] さん:

Sh1も、Sh2のように、End(xlUp)で最終行を求めるとよいと思います。
途中に。空白行がないなら、CurrentRegionを津kってもよいです。

【81311】Re:別シートへ転記したい場合
お礼  [名前なし]  - 20/5/29(金) 13:20 -

引用なし
パスワード
   マナさん
ご教授ありがとうございます。

何分VBAを始めたばかりでマクロを記録して色々やっている状態なので
とてもありがたいです。

End(Xlup)を with Sh1として下記としてみたのですが【型が一致しません】と
なってしまいます。この場合は各シートの何かが違うという事なのでしょうか。
質問ばかりで申し訳ございませんが、またご教授いただけたらと思います。

  Dim Sh1 As Worksheet
  Dim Sh2 As Worksheet
  Dim myRow As Long
   Set Sh1 = Worksheets("入力")
   Set Sh2 = Worksheets("データ")
 
   'データ転記
   With Sh1
        myRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
      End With
     With Sh2
        myRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Range(.Range("A" & myRow), .Range("AN" & myRow)).Value = Sh1.Range("A2:AN2").Value
        .Range("AN" & myRow).Value = Sh1.Range("C2").Value * Sh1.Range("AN2").Value
      End With
      With Sh1
        .Range("A2:AN2").ClearContents
      End With

End Sub
 

【81312】Re:別シートへ転記したい場合
発言  マナ  - 20/5/29(金) 18:55 -

引用なし
パスワード
   ▼[名前なし] さん:

では、まずは条件固定で考えてみてください。

例えば、Sh1のA2:AN10の値を、Sh2のA3に転記する場合は、どう書きますか。

【81314】Re:別シートへ転記したい場合
お礼  [名前なし]  - 20/6/1(月) 16:11 -

引用なし
パスワード
   マナさん
Sh1のA2:AN10の値を、Sh2のA3に転記する場合

上記の場合
私は下記を考えました。

sh1.Range("A2","AN10")copy sh2.Range("A3")

又は
sh.Range("A2:AN10").Value = sh2.Range("A3:AN11").Value

【81318】Re:別シートへ転記したい場合
発言  マナ  - 20/6/2(火) 20:52 -

引用なし
パスワード
   ▼[名前なし] さん:

>sh.Range("A2:AN10").Value = sh2.Range("A3:AN11").Value

左辺と右辺が逆ですよ。

転記先.Value=元データ.Value
です。


まずは、簡単な↓こっちで考えることにします。

>sh1.Range("A2","AN10")copy sh2.Range("A3")

毎回変わるのは、AN10 と A3 の部分ですね。
A3のほうは、すでにできていると思いますので
AN10のほうを、こことかを参考に考えてみてください。
ht tp://officetanaka.net/excel/vba/tips/tips130.htm

【81323】Re:別シートへ転記したい場合
お礼  [名前なし]  - 20/6/3(水) 16:23 -

引用なし
パスワード
   マナさん

いつも本当にありがとうございます。
とっても勉強になります。

逆ですね‥‥お恥ずかしい…

教えていただいたURLを見ながらもっと勉強します!
この度は 本当にありがとうございました。
また何かあれば 教えていただきたく 何卒よろしくお願いいたします。

感謝しかありません!

249 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free