|
▼涙 さん:
おはようございます。
>サンプルまで作って頂いて、大変お手数お掛けしました。
>私が入力したものと、ichinoseさんのサンプルを実行
>した結果と見た目は同じなんですが、なぜ結果が違う
>のか不思議です。。
>確認したいと思います。
よく調べてみて頂くのが一番ですが、
実物見て見ないとわかりませんが、
私のサンプルデータで作動して、涙さんの本データで作動しないとなると、
1 シートAでは、"AAA"が配置されていて
シートBには、"AAA "と最後に空白が入っている
2 表示は、書式設定で"AAA"と表示されているが、実は数値が入っている。
なんてことが想像出来ますが、特に「1」は有りがちなので確認してみて下さい。
結果、最後に空白が入っている場合も一致していると見なして処理したい場合は
以下のように評価数式に「Trim」関数を追加します。
>>
>>標準モジュールに
>>
>>'========================================================
>>Option Explicit
>>Sub main()
>> Dim rng1 As Range
>> Dim rng2 As Range
>> Dim crng As Range
>> Dim nrw As Long
' Call mk_sample_data
' MsgBox "サンプルを Sheet1、Sheet2に作成しました。ここから、処理実行です。"
>>'Sheet1がシートASheet2がシートBに相当します
>>
>> With Worksheets("sheet1")
>> Set rng1 = .Range("a2", .Cells(.Rows.Count, "a").End(xlUp))
>> End With
>> With Worksheets("sheet2")
>> Set rng2 = .Range("b2", .Cells(.Rows.Count, "b").End(xlUp))
>> End With
>> If rng1.Row > 1 Then
>> If rng2.Row > 1 Then
>> nrw = 0
>> For Each crng In rng1
' msgbox "=SUM(EXACT(trim(" & rng2.Address(, , , True) & "),trim(" & crng.Address(, , , True) & "))*1)"
'上記の配列数式を評価します。コメント「’」を取って実行してみて下さい
'このコードは、Evaluate()内の配列数式が理解できれば9割がたOKだと思います。
If Evaluate("=SUM(EXACT(trim(" & rng2.Address(, , , True) & "),trim(" & crng.Address(, , , True) & "))*1)") = 0 Then
>> With rng2
>> .Cells(.Rows.Count + 1 + nrw, 1).Resize(, 2).Value = crng.Resize(, 2).Value
>> .Cells(.Rows.Count + 1 + nrw, 3).Value = 1000
>> End With
>> nrw = nrw + 1
>> End If
>> Next
>> Else
>> With rng2
>> .Cells(2, 1).Resize(rng1.Rows.Count, 2).Value = rng1.Resize(, 2).Value
>> .Cells(2, 3).Resize(rng1.Rows.Count).Value = 1000
>> End With
>> End If
>> End If
>>End Sub
>ヘルプで調べてコツコツ勉強していくことが上達する一番の
>近道でしょうか?
そうだと思います。「急がば・・・」ですかねえ・・。
>始めてから2年くらいになりますが、なかなか上達しないので
>悩んでいます。
>勉強法等をアドバイス頂けると助かります<m(__)m>
勉強方法は、個人差が大きいし、試行錯誤の末、
自分にとって最良な方法を見つけることだと思いますが、
私のことを言えば、このサイトのご質問に回答投稿を行うことは
VBAが上達するのにかなり有益です。
一日、最低1問は投稿するを目標にしています。
(あくまでも目標ですが)
また、他の方の回答投稿を自分で検証してみたりもしています。
その中にこれは。。というものがあれば、
保存していくことで自分用のノートが作成されます。
それを定期的に読み返したりしています。
Q&Aサイトで勉強されたことを公開されている方もいますね。
http://park11.wakwak.com/~miko/index.htm
自分用ノートを作るのは良いことですよね?
Q&Aサイトに参加する前と後では上達スピードは
明らかに違ったことは確信出来ますよ。
今度は、回答者として参加されてみては?
|
|