|
こんにちは。かみちゃん です。
>>最終行の判断とは、B列やH列にどこまでデータが入っているのか、どこまでの
>>行を集約表.xlsに転記したいのかということです。
>> A B C
>>1 あ
>>2 い
>>3 う
>>4
>>(以下B列には値は入っていない)
>>のようなデータのときは、3
>>
>> A B C
>>1 あ
>>2 い
>>3 う
>>4
>>5 え
>>6
>>(以下B列には値は入っていない)
>>のようなデータのときは、5
>>というような感じです。
>>
>この説明から下記コードのどこが変更必要なのでしょうか。
上記の3とか5は、
Cells(Rows.Count, 2).End(xlUp).Row
で取得される値のことです。
これは、B列(2列目)の値が入っている最終行という意味です。
>>> If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
>>> .Range("H3", .Cells(Rows.Count, 8).End(xlUp)).Resize(, 1).Copy _
>
>H列だから8,H列のみだから1というのは分かる
H列の値が入っている最終行を求めるのだから、
.Cells(Rows.Count, 8).End(xlUp)
ですよね?
では、
If .Cells(Rows.Count, 2).End(xlUp).Row > 3 Then
は、何の判断をしていると思いますか?
答えをサラッと書くのは簡単ですが、今後勉強されるのであれば、vangさんのためになりません。
よく使う処理なので、ぜひきちんと理解していただきたいのです。
>>それであれば、逆にどこまでを転記したのかという情報を「店所情報.xls」に
>>持たせておく必要があると思いますよ。
>>そのような情報がない場合、1行ずつ転記したかどうかを判断して、転記して
>>いなかったら、それは新しく追加したものとして、転記するというような面倒
>>なコードを書かないといけません。
>>どうしますか?
>
>難しいコードを組まなくてはならないようなので
>以前のような考えはなくなりました。
それであれば、対応は、まったく変わります。
Workbooks("集約表.xls").ActiveSheet.Range("B6")
の部分を
Workbooks("集約表.xls").ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1)
とします。
なお、このコードにすると、H18年度店所情報.xlsを転記したあとに、
再度、H18年度店所情報.xlsを転記することはできません。
エラーが起こるわけではないですが、二重転記になりますので、十分注意してください。
(そういう考えがなくなったということのようですが、心配です)
>>何度も、申し上げているのですが、
>>1つの年度の情報を何回か転記する場合は、店所情報.xlsと集約表.xlsのどち
>>らかに、転記済みのフラグのようなものが必要かと思います。
>
>また難しい事が・・・。フラグをつけるような能力が私にはありません(泣)
難しいですか?
Excelが泣いていますよ。
今、集約表.xlsに転記されているのは、H18?H19?
これから転記されてくる店所情報.xlsは、H18?H19?
これから転記されるのは、ファイル名で判断できるけど、転記されているのは、わからないなぁ〜(Excel談)
|
|