Excel VBA質問箱 IV

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

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


8658 / 13646 ツリー ←次へ | 前へ→

【31891】総合集計表から個別集計に YN63 05/12/1(木) 21:54 質問[未読]
【31899】Re:総合集計表から個別集計に こたつねこ 05/12/2(金) 0:08 回答[未読]
【31919】Re:総合集計表から個別集計に YN63 05/12/2(金) 11:05 お礼[未読]
【31900】Re:総合集計表から個別集計に ponpon 05/12/2(金) 0:19 発言[未読]
【31902】Re:総合集計表から個別集計に ponpon 05/12/2(金) 1:15 発言[未読]
【31927】Re:総合集計表から個別集計に YN63 05/12/2(金) 13:48 お礼[未読]
【31969】Re:総合集計表から個別集計に YN63 05/12/3(土) 8:52 質問[未読]
【31971】Re:総合集計表から個別集計に こたつねこ 05/12/3(土) 10:19 発言[未読]
【31972】Re:総合集計表から個別集計に YN63 05/12/3(土) 10:58 発言[未読]
【31973】Re:総合集計表から個別集計に こたつねこ 05/12/3(土) 11:15 発言[未読]
【31974】Re:総合集計表から個別集計に こたつねこ 05/12/3(土) 11:26 発言[未読]
【31977】Re:総合集計表から個別集計に YN63 05/12/3(土) 13:25 お礼[未読]
【31986】Re:総合集計表から個別集計に こたつねこ 05/12/3(土) 16:52 回答[未読]
【31988】Re:総合集計表から個別集計に こたつねこ 05/12/3(土) 19:03 回答[未読]
【31991】Re:総合集計表から個別集計に YN63 05/12/3(土) 21:08 お礼[未読]
【31993】Re:総合集計表から個別集計に こたつねこ 05/12/3(土) 22:23 発言[未読]
【32002】Re:総合集計表から個別集計に Hirok 05/12/4(日) 10:48 質問[未読]
【32016】Re:総合集計表から個別集計に こたつねこ 05/12/4(日) 18:10 回答[未読]
【32021】Re:総合集計表から個別集計に YN63 05/12/4(日) 20:01 質問[未読]

【31891】総合集計表から個別集計に
質問  YN63  - 05/12/1(木) 21:54 -

引用なし
パスワード
   毎月の売上の総合集計表から、営業所個別のシートにデータを転記し営業所単位の集計を作成したいのですが(同じブック内でシートを分けて作成)


≪集計表≫毎月最低1回以上の頻度で営業所個別集計シート(シート数は150くらいです)     に転記します。
  A     B    C
1 11月30日
2
3 コードNo 営業所名 売上高
4  101     AAA      100
5  102     BBB      200
6  103     CCC      300
7  104        
8  105     EEE      400
9  106     FFF      250
10 107        
11 108     HHH      500
12 109         
13 110     JJJ      350
14 111     KKK      700
15 112        
16 113     MMM      500


:(全部で150行分のデータがあります。データは歯抜け(行)の状態もあります


≪営業所個別集計≫
  A    B     C    D
1 コードNo 営業所名        
2 101     AAA        
3            
4 年月日         売上高     売上累計
5 9月30日         150    
6 10月31日     200    350
7 11月30日     100    450
:
:


とりあえず、シート名と売上が転記できれば良いのですが…
考えてコードを作成しましたが。
転記できません。アドバイスをお願いします。

Sub 順次選択貼付け()

Dim r As Range
Dim myr As Range

Set myr = Range("B4", Cells(65536, 2).End(xlUp))

For Each r In myr
If r <> "" Then
If r.Value = SheetsName Then
  r.Offset(, 2) = Sheets("r").Range("C65536").End(xlUp).Offset(1)

  'MsgBox r.Value & "と" & r.Row & "行目です"
End If
End If
Next

End Sub

【31899】Re:総合集計表から個別集計に
回答  こたつねこ  - 05/12/2(金) 0:08 -

引用なし
パスワード
   YN63さん、こんばんは

集計表のシート名は”集計表”、
営業所単位の各集計のシート名は営業所名とし
A1セルの日付と売上高を転記する

の条件でYN63さんのコードを修正してみました。

はずしていたらごめんなさい・・・^^;

Sub 順次選択貼付け()

Dim r As Range
Dim myr As Range
Dim dteDate As Date

With Sheets("集計表")
  Set myr = .Range("A4", .Range("A65536").End(xlUp))
  dteDate = .Range("A1").Value
End With

For Each r In myr
  If r.Offset(, 1).Value <> "" Then
   With Sheets(r.Offset(, 1).Value)
     .Range("A65536").End(xlUp).Offset(1).Value = dteDate
     .Range("C65536").End(xlUp).Offset(1).Value = r.Offset(, 2).value
   End With
  End If
Next

End Sub

【31900】Re:総合集計表から個別集計に
発言  ponpon  - 05/12/2(金) 0:19 -

引用なし
パスワード
   こんばんは。
シート”総合集計表”に一覧データ
個別のシート名は、半角の"101"、"102"、"103"・・・"150"とすでに
作成され、A4 B4 C4 が "年月日""売上高""売り上げ累計"
が入力されているものとします。


Sub test()
 Dim sh As Worksheet
 Dim FR As Variant
 
 For Each sh In ThisWorkbook.Worksheets
  If sh.Name <> "総合集計表" Then
   FR = Application.Match(Val(sh.Name), Worksheets("総合集計表").Range("A:A"), 0)
   If Not IsError(FR) Then
     With sh
      If Not IsEmpty(Worksheets("総合集計表").Cells(FR, 2).Value) Then
       .Range("A65536").End(xlUp).Offset(1).Value = _
            Worksheets("総合集計表").Range("A1").Value
       .Range("B65536").End(xlUp).Offset(1).Value = _
            Worksheets("総合集計表").Cells(FR, 3).Value
      End If
      If IsNumeric(.Range("C65536").End(xlUp).Value) Then
       .Range("C65536").End(xlUp).Offset(1).Value = _
           .Range("C65536").End(xlUp).Value + .Range("C65536").End(xlUp).Offset(1, -1).Value
      Else
       .Range("C65536").End(xlUp).Offset(1).Value = _
           .Range("C65536").End(xlUp).Offset(1, -1).Value
      End If
     End With
    End If
  End If
 Next
End Sub

【31902】Re:総合集計表から個別集計に
発言  ponpon  - 05/12/2(金) 1:15 -

引用なし
パスワード
   こんばんは。
シートを150近くも作るのは大変だろうから、
シートを追加して処理するのも作ってみたのですが、・・・

エラー処理が怪しいです。
各集計シートがなければ追加し、必要事項の記入
あれば次々に転記のはずなのですが・・
この処理は、どこかでKeinさんが書いたのをROMしてたのですが、
ROMしたのが、どこかにいっちゃった。残念!!

一応こちらではできてますが、エラー処理が怪しいので
だめなときは、捨ててください。

Sub test2()
 Dim mySh As Worksheet
 Dim R As Range
 Dim myR As Range
 
  With Worksheets("総合集計表")
   Set myR = .Range("A4", .Range("A65536").End(xlUp))
   For Each R In myR
    On Error GoTo エラー
    Set mySh = Worksheets(R.Text)
    On Error GoTo 0
    With mySh
      If Not IsEmpty(R.Offset(0, 1).Value) Then
       .Range("A65536").End(xlUp).Offset(1).Value = _
            Worksheets("総合集計表").Range("A1").Value
       .Range("B65536").End(xlUp).Offset(1).Value = _
            R.Offset(, 2).Value
      End If
      If IsNumeric(.Range("C65536").End(xlUp).Value) Then
       .Range("C65536").End(xlUp).Offset(1).Value = _
           .Range("C65536").End(xlUp).Value + .Range("C65536").End(xlUp).Offset(1, -1).Value
      Else
       .Range("C65536").End(xlUp).Offset(1).Value = _
           .Range("C65536").End(xlUp).Offset(1, -1).Value
      End If
     End With
   
   Next
  End With
   Exit Sub
エラー:
    Set mySh = Worksheets.Add(after:=Sheets(Sheets.Count))
     With mySh
      .Name = R.Value
      .Range("A1:B1").Value = Array("コードNo", "営業所名")
      .Range("A2:B2").Value = R.Resize(1, 2).Value
      .Range("A4").Resize(1, 3).Value = Array("年月日", "売上高", "売り上げ累計")
     End With
    Resume
End Sub

【31919】Re:総合集計表から個別集計に
お礼  YN63  - 05/12/2(金) 11:05 -

引用なし
パスワード
   ▼こたつねこ さん:

早速ご解答いただき喜んでいます。

>はずしていたらごめんなさい・・・^^;
いえいえ
ばっちりでした。ありがとうございます。
シンプルな表現は非常に勉強になりました。
これからも宜しくお願いします。失礼します。

【31927】Re:総合集計表から個別集計に
お礼  YN63  - 05/12/2(金) 13:48 -

引用なし
パスワード
   ▼ponpon さん:

こんにちは
いつもご指導ありがとうございます。

お陰さまで、上手く行きました。
2番目も上手く行きました。

これから実作業にマクロを移して、色々と考えて
行きます。

これからも宜しくお願いします。
それでは失礼します。

最初はシートの追加の意味が分からずシートを準備して
動かしていたのですが、…意味が分かりました。

【31969】Re:総合集計表から個別集計に
質問  YN63  - 05/12/3(土) 8:52 -

引用なし
パスワード
   ▼こたつねこさん:
貴重なコードをご提示いただき感謝しています。

また質問が出てきました。出来ますればアドバイスをお願いします。

≪集計表≫毎月最低1回以上の頻度で営業所個別集計シート(シート数は150くらいです)     に転記します。
  A     B    C
1 11月30日
2
3 コードNo 営業所名     売上高
4  101     AAA      100
5  102     BBB      200
6  103     CCC      300
7  104        
8  105     EEE      400
9  106     FFF      250
10 107        
11 108     HHH      500
12 109         
13 110     JJJ      350
14 111     KKK      700
15 112        
16 113     MMM      500


:(全部で150行分のデータがあります。データは歯抜け(行)の状態もあります


≪営業所個別集計≫
  A    B     C    D
1 コードNo 営業所名        
2 101     AAA        
3            
4 年月日      売上高   売上累計
5 9月30日      150    450
6 10月31日     200    
7 11月30日     100    
:


こたつねこさん
≪集計表≫から≪営業所個別集計≫は完全に動いています。この後
更に≪年次集計表≫を作成する必要が出てきました。
12月ですと4ケ月分…最終は12ケ月の合計を営業所別に
一覧にしたいのですが…
仕上がりの表は一枚(複数に分ける必要はありません)、
つまり≪年次個別集計≫(月次累計の経過にも使用しますが)
のシート一枚に仕上げたいのです。

このような仕上げです
  A      B    C   D
3 コードNo 営業所名     売上累計
4  101     AAA      5000
5  102     BBB      1000
6  103     CCC      7000
7  104        
8  105     EEE      8000





毎月の「売上累計」の数字を反映させ一枚のたいのですが
頂いたコードのような感じで作成できませんでしょうか。
私なりに検討を進めていますが、アドバイスをお願い
します。

【31971】Re:総合集計表から個別集計に
発言  こたつねこ  - 05/12/3(土) 10:19 -

引用なし
パスワード
   YN63さん、こんにちは

まず、確認事項ですが

>≪集計表≫から≪営業所個別集計≫は完全に動いています。この後
>更に≪年次集計表≫を作成する必要が出てきました。
>12月ですと4ケ月分…最終は12ケ月の合計を営業所別に
>一覧にしたいのですが…
これは四半期ごとに集計したいと言うことで良いのでしょうか?

>仕上がりの表は一枚(複数に分ける必要はありません)、
>つまり≪年次個別集計≫(月次累計の経過にも使用しますが)
月次累計の経過にも使用とのことですが、下記の表で四半期
集計だと月次の累計は一目で分からないと思うのですが、
本当に下記のような構成でよろしいのでしょうか?

>このような仕上げです
>  A      B    C   D
>3 コードNo 営業所名     売上累計
>4  101     AAA      5000
>5  102     BBB      1000
>6  103     CCC      7000
>7  104        
>8  105     EEE      8000
>:
>:

【31972】Re:総合集計表から個別集計に
発言  YN63  - 05/12/3(土) 10:58 -

引用なし
パスワード
   ▼こたつねこ さん:

失礼しました。表現が不味いということでご迷惑をかけています。
表しきれない小生の表現能力の無さです。

要は、毎月の営業所の累計を一覧に仕上げたいのです。
例えば9月ですと期の最初の月ですので
1ケ月分のみです。
10月は9月と10月の2ケ月分の累計です。
来年の8月には12ケ月分の累計になります。
(月次単位でプリントしたいのです。)

営業所単位のシートのD6の累計を拾って一枚の
表にしたいのですが…これでお分かりいただけるでしょうか。

営業所単位(これはAAAのシートです)のシート
  A      B    C     D
5 年月日       備考  売上      売上累計
6 8月31日   繰越  2,000      5,000←ここはシート関数でしています
7 9月30日      1,000          
8 10月31日      2,000      


>これは四半期ごとに集計したいと言うことで良いのでしょうか?

いいえ、月単位で(9月、10月、…8月)累計が見たいのです
>
>>仕上がりの表は一枚(複数に分ける必要はありません)、
>>つまり≪年次個別集計≫(月次累計の経過にも使用しますが)
>月次累計の経過にも使用とのことですが、下記の表で四半期
>集計だと月次の累計は一目で分からないと思うのですが、
>本当に下記のような構成でよろしいのでしょうか?
>

営業所単位の表は貴殿に教えていただき上記のような表に
仕上がっています。上のAAA営業所を始め150余りのシートに
仕上げた営業所の累計を下の表のように累計表に仕上げたいのです。
(AAAの営業所の10月31日の売上累計は5000ですので累計表に
5000と表示させたいのです…BBBの累計は1000です、以下同じように
累計の表に仕上げたいのです)

このような仕上げです
>>  A      B    C   D
>>3 コードNo 営業所名     売上累計
>>4  101     AAA      5000
>>5  102     BBB      1000
>>6  103     CCC      7000
>>7  104        
>>8  105     EEE      8000
>>:
>>:

【31973】Re:総合集計表から個別集計に
発言  こたつねこ  - 05/12/3(土) 11:15 -

引用なし
パスワード
   YN63さん、こんにちは

大体のイメージが掴めたと思います。
単に累計の値を引っ張ってきて作表したいと言うことですね?

そこでもう一つ確認したいのですが、システム日付が9月の場合
8月までの累計を参照するような動作でいいのでしょうか?
それとも、何月までの累計なのか入力を促してその月までの累計
を参照する方が良いのでしょうか?

【31974】Re:総合集計表から個別集計に
発言  こたつねこ  - 05/12/3(土) 11:26 -

引用なし
パスワード
   YN63さん、こんにちは

これより、外出しますのでレスが遅くなる可能性が
あります。
申し訳ありません。

【31977】Re:総合集計表から個別集計に
お礼  YN63  - 05/12/3(土) 13:25 -

引用なし
パスワード
   ▼こたつねこ さん:

ご配慮ありがとうございます。

>大体のイメージが掴めたと思います。
>単に累計の値を引っ張ってきて作表したいと言うことですね?

はい、その通りです。各営業所(シート単位で)の累計がD6にありますので
、その累計数字を「月次/年年度集計」の一枚のシートに営業所
(一行分)順に張り付けられるような方法が知りたいのです。

>そこでもう一つ確認したいのですが、システム日付が9月の場合
>8月までの累計を参照するような動作でいいのでしょうか?
はい、毎月基本的には月末に集計しています。
システム日時とは特に関連をもたせていません。

>それとも、何月までの累計なのか入力を促してその月までの累計
>を参照する方が良いのでしょうか?
そのような高度なものまでは、要りません。
是非宜しくお願いします。

With構文で頂戴したあの素晴らしいコードに本当に喜んで
おります。未だ一部理解が出来ていないところもあり、また
質問させていただきたく思っております。
その折にはまた宜しくお願いします。

【31986】Re:総合集計表から個別集計に
回答  こたつねこ  - 05/12/3(土) 16:52 -

引用なし
パスワード
   YN63さん、こんにちは

まだ出先なのですが、Netに繋ぐ時間ができましたので
とりあえず、コードをUP致します。
ただし、検証できる環境がございませんので、未検証の
コードとなります。
なので、一応コメントを付けますね。
ご確認ください。

Sub 累計転記()
 '集計するシート名
 Const strUSH As String = "月次/年年度集計"
 Dim SH As Worksheet
 Dim lngRow As Long
 
 For Each SH In Worksheets
  If SH.Name <> strUSH _
   And SH.Name <> "集計表" Then
   With Sheets(strUSH)
     '集計表の最終行を取得
     lngRow = .Range("A65536").End(xlUp).Row + 1
     'コードNoを転記
     .Range("A" & lngRow).Value = SH.Range("A2").Value
     '営業所名を転記
     .Range("B" & lngRow).Value = SH.Range("B2").Value
     '累計を転記
     .Range("D" & lngRow).Value = SH.Range("A65536").End(xlUp).Offset(, 3).Value
   End With
  End If
 Next
 '転記したデータをソートする
 Sheets(strUSH).Range("A4:D" & lngRow).Sort _
   Key1:=Range("A4"), _
   Order1:=xlAscending, _
   Header:=xlGuess
End Sub

【31988】Re:総合集計表から個別集計に
回答  こたつねこ  - 05/12/3(土) 19:03 -

引用なし
パスワード
   YN63さん、こんにちは

>はい、その通りです。各営業所(シート単位で)の累計がD6にありますので
累計はD6だったのですね^^;
以下を修正してください。

>
>Sub 累計転記()
> '集計するシート名
> Const strUSH As String = "月次/年年度集計"
> Dim SH As Worksheet
> Dim lngRow As Long
> 
> For Each SH In Worksheets
>  If SH.Name <> strUSH _
>   And SH.Name <> "集計表" Then
>   With Sheets(strUSH)
>     '集計表の最終行を取得
>     lngRow = .Range("A65536").End(xlUp).Row + 1
>     'コードNoを転記
>     .Range("A" & lngRow).Value = SH.Range("A2").Value
>     '営業所名を転記
>     .Range("B" & lngRow).Value = SH.Range("B2").Value
>     '累計を転記
>     '.Range("D" & lngRow).Value = SH.Range("A65536").End
>      (xlUp).Offset.(, 3).Value
'累計を転記
.Range("D" & lngRow).Value = SH.Range("D6").Value

>   End With
>  End If
> Next
> '転記したデータをソートする
> Sheets(strUSH).Range("A4:D" & lngRow).Sort _
>   Key1:=Range("A4"), _
>   Order1:=xlAscending, _
>   Header:=xlGuess
>End Sub

【31991】Re:総合集計表から個別集計に
お礼  YN63  - 05/12/3(土) 21:08 -

引用なし
パスワード
   ▼こたつねこ さん:

ありがとうございます。きっちりと動作しました。
不十分な説明をご理解いただき、また
大変忙しい中、貴重な時間を裂いていただき本当に感謝しています。
更にコードの解釈もつけていただき喜んでおります。
力不足のため、まだ十分に理解できていませんが、やりたい内容はすべてクリア
でき、大きな収穫を頂いた感じです。

それから、あと一点教えてください。

一番最初の解答で書いていただいたコードで
For Each r In myr
  If r.Offset(, 1).Value <> "" Then
   With Sheets(r.Offset(, 1).Value)
     .Range("A65536").End(xlUp).Offset(1).Value = dteDate
     .Range("C65536").End(xlUp).Offset(1).Value = r.Offset(, 2).value
   End With
  End If
Next
この部分ですが、何故シートを全て参照できるのか?疑問を抱いています。
With Sheets(r.offset(,1).valueのコードの役割とは思いますが、
どのような解釈をして、このシート全体を参照してデータを貼り付けているのか
コメントいただけませんでしょうか。

本当にありがとうございました。これから更に勉強したく思います。
失礼します。

【31993】Re:総合集計表から個別集計に
発言  こたつねこ  - 05/12/3(土) 22:23 -

引用なし
パスワード
   YN63さん、こんばんは

>ありがとうございます。きっちりと動作しました。
動作して何よりです。

文章が思いっきり苦手なので、うまく説明できませんが
最初のコードのコメントを付けて見ます。

ご自分で一度必ずHelpや書籍等で確認してくださいね^^;

Sub 順次選択貼付け()

Dim r As Range
Dim myr As Range
Dim dteDate As Date

With Sheets("集計表")
  '日付の入力のある範囲をセット
  Set myr = .Range("A4", .Range("A65536").End(xlUp))
  '日付を変数に格納
  dteDate = .Range("A1").Value
End With

'日付の入力のある範囲を1セルづつ繰り返し変数rにセットする
For Each r In myr
  '営業所名がNullでない場合実行
  If r.Offset(, 1).Value <> "" Then
   '転記先のシート名が=営業所名なので日付の1列右のセルの値を
   'シート名として指定
   With Sheets(r.Offset(, 1).Value)
     '指定シートのA列最終行+1に日付を転記
     .Range("A65536").End(xlUp).Offset(1).Value = dteDate
     '指定シートのC列最終行+1に売上高を転記
     .Range("C65536").End(xlUp).Offset(1).Value = r.Offset(, 2).value
   End With
  End If
Next

End Sub

【32002】Re:総合集計表から個別集計に
質問  Hirok  - 05/12/4(日) 10:48 -

引用なし
パスワード
   ▼こたつねこ さん:

貴重なコメントありがとうございました。
このコードを実際に仕事に活用しますので、自分なりに
コードの解釈と、部分的な変更が対応でき、自分に自信と
活用する勇気を得るために、色々とお聞きしご迷惑をかけました。
単純なWith構文は自分でも作成するのですが、貴殿の書かれた
この後半のWith構文の構成が理解できていません。
どのように理解すると良いのか、もしコメントいただければ幸いですが。


>Sub 順次選択貼付け()
>
>Dim r As Range
>Dim myr As Range
>Dim dteDate As Date
>
>With Sheets("集計表")
>  '日付の入力のある範囲をセット
>  Set myr = .Range("A4", .Range("A65536").End(xlUp))
>  '日付を変数に格納
>  dteDate = .Range("A1").Value
>End With
>
>'日付の入力のある範囲を1セルづつ繰り返し変数rにセットする
>For Each r In myr
>  '営業所名がNullでない場合実行
>  If r.Offset(, 1).Value <> "" Then
>   '転記先のシート名が=営業所名なので日付の1列右のセルの値を
>   'シート名として指定

⇒  ここでのWith Sheetsは転記先のシートを指すのですか?
   転記先と理解する判断基準は何なのでしょうか。
   r.Offset(,1).valueは"集計表"での営業所名の列で、シートの
   異なるもの(内容)が同居して、よくコードが成り立つのが不思議です。
   どのように理解すると良いのでしょう? 

>   With Sheets(r.Offset(, 1).Value)
>     '指定シートのA列最終行+1に日付を転記
>     .Range("A65536").End(xlUp).Offset(1).Value = dteDate
>     '指定シートのC列最終行+1に売上高を転記
>     .Range("C65536").End(xlUp).Offset(1).Value = r.Offset(, 2).value
>   End With
>  End If
>Next
>
>End Sub

【32016】Re:総合集計表から個別集計に
回答  こたつねこ  - 05/12/4(日) 18:10 -

引用なし
パスワード
   Hirokさん、こんにちは

Hirokさん=YN63さんでしょうか?

>⇒  ここでのWith Sheetsは転記先のシートを指すのですか?
その通りです。

>   r.Offset(,1).valueは"集計表"での営業所名の列で、シートの
>   異なるもの(内容)が同居して、よくコードが成り立つのが不思議です。
>   どのように理解すると良いのでしょう? 
たとえば、以下のようなコードにすると分かりやすいでしょうか?
For Each〜Next文でmyrにセットしたデータ範囲をA4セルから順に変数に
取得してループしています。
そのループの中で都度シート名をセットしていますので、転記先のシート
名の違っているものでも転記できているのです。

文章が思いっきり苦手な為、分かりにくいかもしれません。
すいません・・・^^;

Sub 順次選択貼付け()
Dim r As Range
Dim myr As Range
Dim dteDate As Date
Dim 転記先シート名 As String

With Sheets("集計表")
  '日付の入力のある範囲をセット
  Set myr = .Range("A4", .Range("A65536").End(xlUp))
  '日付を変数に格納
  dteDate = .Range("A1").Value
End With

'日付の入力のある範囲を1セルづつ繰り返し変数rにセットする
For Each r In myr
  '営業所名がNullでない場合実行
  If r.Offset(, 1).Value <> "" Then
   '転記先のシート名が=営業所名なので日付の1列右のセルの値を
   'シート名として指定
   '転記先のシート名を取得
   転記先シート名=r.Offset(,1).Value
   With Sheets(転記先シート名)
   'With Sheets(r.Offset(, 1).Value)
     '指定シートのA列最終行+1に日付を転記
     .Range("A65536").End(xlUp).Offset(1).Value = dteDate
     '指定シートのC列最終行+1に売上高を転記
     .Range("C65536").End(xlUp).Offset(1).Value = r.Offset(, 2).value
   End With
  End If
Next
End Sub

【32021】Re:総合集計表から個別集計に
質問  YN63  - 05/12/4(日) 20:01 -

引用なし
パスワード
   ▼こたつねこ さん:

>Hirokさん=YN63さんでしょうか?
はい。
63歳になりましたので、普通は63を付けニックネームと
しています。

最後までお付き合いいただきありがとうございました。
これで、良く分かりました。

貴殿のご指示どおり、VBAの本などを読めばよいのでしょうが
本に頼ると記憶しょうとする努力を失うのでは?っと思い
極力、その都度感覚的に覚えるようにしています。

>
>>⇒  ここでのWith Sheetsは転記先のシートを指すのですか?
>その通りです。
>
>>   r.Offset(,1).valueは"集計表"での営業所名の列で、シートの
>>   異なるもの(内容)が同居して、よくコードが成り立つのが不思議です。
>>   どのように理解すると良いのでしょう? 
>たとえば、以下のようなコードにすると分かりやすいでしょうか?
>For Each〜Next文でmyrにセットしたデータ範囲をA4セルから順に変数に
>取得してループしています。
>そのループの中で都度シート名をセットしていますので、転記先のシート
>名の違っているものでも転記できているのです。
>

上記の内容を理解し、次の課題の時には応用したく思います。
With構文はF8で追いかけられませんので、慣れるまで時間が
かかりそうです。

ともあれ、お世話になり感謝しています。
今後とも宜しくお願いします。失礼しました。

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