|
> 1. "合致"の代わりに更新日を入れるとすれば、
> '合致を記入
>
>> vntResult(lngComp2, 1) = Date
>
> ではエラーがでてしまいますね?プログラム的に問題ないですよね?
変な変更を行っていなければ上記で日付が入るはずですし
当方でのTestでは、日付が入ります
> 2. シート2のD列に例えばシート1のC列を書き込むとすれば
>
> vntResult(lngComp2, 2) = vntList1(1)(lngComp1, 2)
>
> でいいんですかね?
此れはNGですね、シート1のC列に就いては当然考慮していませんので
配列にC列のデータを取得していませんし、そもそも配列自体そのサイズなっていません
C列を出力したければ、以下を修正します
'Sheet2のデータ列数(A列〜C列)
' Const clngColumns2 As Long = 3
Const clngColumns2 As Long = 4 '★変更(D列に書き込むならここをD列までに拡張する)
End If
'結果出力用配列を確保
' ReDim vntResult(1 To lngRows2, 1 To 1)
ReDim vntResult(1 To lngRows2, 1 To 2) '★変更
'追加位置を記録
lngAppend = lngRows2
Sub DataMatch()の場合
Case Is = 0 'Matchiした場合
'合致を記入
' vntResult(lngComp2, 1) = "合致"
vntResult(lngComp2, 1) = Date '★変更
vntResult(lngComp2, 2) = rngList1.Offset(lngComp1, 3).Value '★追加
'Sheet1、Sheet2のシートの比較位置を更新
lngComp1 = lngComp1 + 1
lngComp2 = lngComp2 + 1
Sub DataMatch2の場合
If .Exists(vntKey) Then
' vntResult(.Item(vntKey), 1) = "合致"
vntResult(.Item(vntKey), 1) = Date '★変更
vntResult(.Item(vntKey), 2) = rngList1.Offset(lngComp1, 3).Value '★追加
Else
> 3. (lngComp2, 2) をもっと大きな(lngComp2, 24)等ににするのはNGですか?これでZ列に書き込みが出来るのか>>なと思ったのですが。。。インデックスが有効範囲にありませんと出ます。
NGとまでは言い切れませんが、配列のサイズがデータ量に因っては大きくなりすぎる可能性が有ります
ただ、ご自分で試して見る様ですね
変更方法は、
'結果出力用配列を確保
' ReDim vntResult(1 To lngRows2, 1 To 1)
ReDim vntResult(1 To lngRows2, 1 To 24) '★変更
'追加位置を記録
lngAppend = lngRows2
これで使えない様ならば、コードを変更し(遅くなるのを覚悟して)、
列出力では無く、行処理にすればいいと思います
|
|