advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 159 for (素人) (0.000 sec.)
[[20140610175448]]
#score: 10177
@digest: 0cefca825bed6cc53afd3f7b9bb1aab1
@id: 65354
@mdate: 2014-06-18T23:59:57Z
@size: 11546
@type: text/plain
#keywords: 週デ (28565), tbl2 (28108), myrng1 (27927), ダ├ (27823), myrng2 (23851), tbl1 (19879), myrow (8896), (素 (7038), 先週 (6146), 素人 (5023), チン (4416), ルウ (3805), variant (3334), 2014 (3239), 効範 (3096), 人) (2918), カル (2813), ッチ (2519), マッ (2451), 一致 (2375), (ha (2273), タ範 (2183), デッ (2114), ファ (1962), ーカ (1872), 範囲 (1862), ング (1820), 金) (1688), ウィ (1600), ィン (1599), currentregion (1578), ンデ (1569)
『解説してください』(素人) こちらで見つけたマクロを流用したいと思いましたが、素人のため何となくしか 内容が読み取れず、どこを変更していいかがいまいちわかりません。 解説を付けていただけませんか?('先週データ範囲など、どの部分がどう動くか的な) 流用したいマクロは[[20110104170754]]です。 Sub test() Dim myRng1 As Range, myRng2 As Range Dim tbl1 As Variant, tbl2 As Variant Dim i As Long, j As Long, myRow As Long Set myRng1 = Worksheets("Sheet1").Range("A1").CurrentRegion '先週データ範囲 Set myRng2 = Worksheets("Sheet2").Range("A1").CurrentRegion '今週データ範囲 tbl1 = myRng1.Value tbl2 = myRng2.Value For i = 1 To UBound(tbl2) myRow = 0 On Error Resume Next With Application.WorksheetFunction myRow = .Match(tbl2(i, 4), .Index(tbl1, 0, 4), 0) End With On Error GoTo 0 If myRow = 0 Then myRng2.Rows(i).Interior.ColorIndex = 8 Else For j = 1 To 26 If tbl1(myRow, j) <> tbl2(i, j) Then myRng2.Cells(i, j).Interior.ColorIndex = 6 End If Next j End If Next i End Sub < 使用 Excel:unknown、使用 OS:unknown > ---- ざっと見た感じ二つのシートのA:Zの範囲を比較して違っている部分に色をつけている ようですけれど、何を変更したいのかを説明してください。 そうでないとどこを説明してよいかがわかりませんので。 (Mook) 2014/06/10(火) 19:37 ---- 上記のマクロでマッチングはできますか? 流用して以下のようなマクロを作成できるかおしえてください。 Eファイルに上記のマクロをセットし、マッチングができるのであれば BファイルとCファイルのB列でマッチングをし、一致したら行を見に行く ようにし、違うところは色付けをする。 Aフォルダ ├Bファイル・Cファイル Dフォルダ ├Eファイル (素人) 2014/06/11(水) 11:32 ---- これはまたずいぶんと飛躍しましたね。 >こちらで見つけたマクロを流用したいと思いましたが というレベルの変更ではないように思います。 マッチングの内容が不明瞭ですが、単にあるか無いかの比較であれば、作業列をおき COUNTIF 等で対応シートでの有無を確認するくらいが手っ取り早いと思います。 懐かしいmomoさんの回答だったのでコメントしましたが、別の案件になりそうなので マクロでの実現を希望する場合は他の方の回答をお待ちください。 個人的な感想なので強制でも何でもありませんが、 ニックネームは匿名ではない名前が良いかと思います。 (Mook) 2014/06/11(水) 13:06 ---- 二つのブックが決まっているなら 単純に Set myRng1 = Worksheets("Sheet1").Range("A1").CurrentRegion '先週データ範囲 の所でブック名も含めた範囲を指定してはどうでしょう? 今はブック名が省略されているので、アクティブブックの Sheet1とSheet2の範囲になっています。 (HANA) 2014/06/12(木) 11:54 ---- (HANA)様、説明不足ですいませんが、Eファイルに、BファイルのシートとCファイルのシートを コピーしてくるマクロは自分なりに見よう見まねで作成しました。 あとは、Eファイルの中で、BファイルとCファイルのB列をマッチングしていくところからのマクロが 作成できません。 BファイルとCファイルのB列の並びが規則的ではなく、行数も変動するため、マッチングがが必要かと 考えています。 お手すきでしたら、教えていただきたく思います。 おねがいします。 Aフォルダ ├Bファイル・Cファイル Dフォルダ ├Eファイル (素人) 2014/06/12(木) 17:00 ---- Eファイルに二つのシートをコピーできたなら 後は 過去ログのコードから マッチングの列番号を変更するだけですよね? myRow = .Match(tbl2(i, 4), .Index(tbl1, 0, 4), 0) この部分で、4列目・・・D列・・・でマッチングしてますが B列であれば 二ヶ所の「4」を「2」に変更で出来ませんか? それから For j = 1 To 26 で、26列目・・・Z列・・・まで照合を行っていますが 表が26列目までない場合は、この部分も適宜変更して下さい。 また、Mookさんが書いておられますが >個人的な感想なので強制でも何でもありませんが、 >ニックネームは匿名ではない名前が良いかと思います。 私もその様に思います。 この手の掲示板には (素人)さんはたくさんおられますので。 (HANA) 2014/06/12(木) 17:19 ---- ニックネームについてご指摘ありがとうございます。 次回から変えるようにします。 この部分を変更してみました。 >myRow = .Match(tbl2(i, 4), .Index(tbl1, 0, 4), 0) > For j = 1 To 26 この部分でエラーになってしまいます。 >For i = 1 To UBound(tbl2) 型が一致しませんとなってしまいます (素人) 2014/06/12(木) 17:49 ---- Setのコードのすぐ次に MsgBox myRng2.Address なんてコードを入れて、実際に表があるセル範囲と一致しているか確認してみて下さい。 >Set myRng1 = Worksheets("Sheet1").Range("A1").CurrentRegion '先週データ範囲 となっていますので、表はA1セルから連続した範囲にある必要があります。 表がA1セルに隣接していない範囲にある(A2,B1,B2セルが未入力)場合は 表のある範囲の取得方法も変更の必要が出てくると思います。 (HANA) 2014/06/12(木) 21:52 ---- 範囲がA6:Z11でした。 >MsgBox myRng2.Address ("A1")の部分を修正してみました。 >Set myRng1 = Worksheets("Sheet1").Range("A6").CurrentRegion ここでエラーがでます。(インデックスが有効範囲にありません。) >If tbl1(myRow, j) <> tbl2(i, j) Then よろしくおねがいします。 (素人) 2014/06/13(金) 10:26 ---- ローカルウィンドウを表示させて エラーが出る時に myRow,j,i のそれぞれの値を確認して下さい。 また、tbl1,tbl2の大きさが、myRow,j,i に収まっているか確認して下さい。 「型」の列に Variant/Variant(1 to 6, 1 to 26) の様に書かれていると思います。 myRow,i が、 前側の 1 to 6 の範囲内の値か? j が、後ろ側の 1 to 26 の範囲内の値か? この範囲外の位置を見に行かせようとすると >インデックスが有効範囲にありません。 のメッセージがでます。 なぜ範囲外になってしまうのか、原因を突き止める必要があると思います。 もしかしたら、表が1行目から始まっていないためかもしれません。 そのあたりも含めて、確認してみて下さい。 別件(もう少し後の話)になりますが、セルに色を付ける部分は 表の開始位置がずれている分、ずらさないといけないです。 (HANA) 2014/06/13(金) 10:51 ---- 値とはこれであっていますか…? (j=3) (i=1) >myRow,j,i のそれぞれの値を確認して下さい 確認?どこをみたらよいのですか…? >tbl1,tbl2の大きさが、myRow,j,i に収まっているか確認して下さい。 表はA6から始まっています。表の上の行にはタイトルなどはいっているので 行の削除ができないのですが... >もしかしたら、表が1行目から始まっていないためかもしれません。 ありがとうございます。 >セルに色を付ける部分は表の開始位置がずれている分、ずらさないといけないです。 (素人) 2014/06/13(金) 11:13 ---- tbl1,tbl2の大きさは ローカルウィンドウの tbl1 とか tbl2 とかの 「型」の列です。 Variant/Variant(1 to 6, 1 to 26) なんてのが書かれていると思います。 >範囲がA6:Z11でした。 と言う事なので、6行26列の表だと思いますが。 なので、 j=3 , i=1 であれば 3行目の1列目 なので 範囲に収まっている事になります。 tbl1の方でエラーなのかな。。。? (HANA) 2014/06/13(金) 11:41 ---- tbl1、tbl2の型?を見ると tbl1 = myRng1.Value に対してはなにもでないですが、 tbl2 = myRng2.Value に対しては tbl2 = myRng2.Value=オブジェクト変数またはWithブロック変数が設定されていません というふうになり、Variant/Variant(1 to 6, 1 to 26)がでてきません >Variant/Variant(1 to 6, 1 to 26)なんてのが書かれていると思います。 For i = 1 To UBound(tbl2) UBound(tbl2)=型が一致しません となります myRow = .Match(tbl2(i, 4), .Index(tbl1, 0, 4), 0) tbl2(i, 4)=型が一致しません となります If tbl1(myRow, j) <> tbl2(i, j) Then tbl1(myRow, j)=型が一致しません となります tbl2(i, j)=型が一致しません となります よろしくおねがいします (素人) 2014/06/13(金) 12:04 ---- >tbl1 = myRng1.Value に対してはなにもでないですが、 ってどういう事ですか? それ以降に関しても、何のご説明なのか よくわかりません。 >ここでエラーがでます。(インデックスが有効範囲にありません。) >>If tbl1(myRow, j) <> tbl2(i, j) Then じゃなかったんですか? (HANA) 2014/06/13(金) 13:22 ---- 素人なため型の見方?がよくわからなかったのですが、 Variant/Variant(1 to 6, 1 to 26)このような型?が見当たらなかったです。 >tbl1,tbl2の大きさはローカルウィンドウの tbl1 とか tbl2 とかの「型」の列です。 Variant/Variant(1 to 6, 1 to 26) なんてのが書かれていると思います。 先ほど記載したもの(以下参照)は、コードの上にカーソルを持っていくと、 現れた内容を載せました。 For i = 1 To UBound(tbl2) UBound(tbl2)=型が一致しません となります myRow = .Match(tbl2(i, 4), .Index(tbl1, 0, 4), 0) tbl2(i, 4)=型が一致しません となります If tbl1(myRow, j) <> tbl2(i, j) Then tbl1(myRow, j)=型が一致しません となります tbl2(i, j)=型が一致しません となります (素人) 2014/06/13(金) 14:05 ---- ローカルウィンドウは表示できていますか? 他サイトですが。 http://excelvba.pc-users.net/fol8/8_2.html そのウィンドウの一番上の灰色の部分に 式 値 型 と書いてありませんか? 文字だけのやり取りになるので なかなか伝わりにくいと思いますが 我慢しておつきあいください。 (HANA) 2014/06/13(金) 14:29 ---- こちらこそお付き合いいただきとても感謝しております。 恥ずかしながら、ローカルウィンドウの表示方法を初めて知りました。 教えていただいた方法で出てきた型は以下です。 よろしくおねがいします。 : myRng1 : Nothing : Range : myRng2 : Nothing : Range : tbl1 : Empty 値 : Variant/Empty : tbl2 : Empty 値 : Variant/Empty : i : 0 : Long : j : 0 : Long : myRow : 0 : Long (素人) 2014/06/13(金) 14:51 ---- えっと、エラーになって止まった時に その状態ですか? たとえば : myRng1 : Nothing : Range って事は Set myRng1 = Worksheets("Sheet1").Range("A1").CurrentRegion で、Setされてない・・・Notingなので・・・って事です。 でも >>MsgBox myRng2.Address >範囲がA6:Z11でした。 は、確認出来てるんですよね? myRng2だけでなく、myRng1の方も確認してみて下さい。 (HANA) 2014/06/13(金) 15:04 ---- すみません。 エラーが出たときは以下になります。 + : myRng1 : : Range/Range + : myRng2 : : Range/Range + : tbl1 : : Variant/Variant(1 to 6, 1 to 26) + : tbl2 : : Variant/Variant(1 to 6, 1 to 26) : i : 1 : Long : j : 27 : Long : myRow : 1 : Long (素人) 2014/06/13(金) 15:17 ---- jが「27」になってますね。 tbl1 も tbl2 も 26列の範囲しかないですよね。 >>tbl1,tbl2の大きさが、myRow,j,i に収まっているか確認して下さい。 の結果としては、 jが収まってない事になります。 なので >この範囲外の位置を見に行かせようとすると >>インデックスが有効範囲にありません。 >のメッセージがでます。 でも > For j = 1 To 26 なので、jは26までにしかなれないと思います。 なぜ j が 27 まで行ってしまうのか コードを見直してみて下さい。 (HANA) 2014/06/13(金) 15:28 ---- 数値が27になっていたため、お手数をおかけしました。 > For j = 1 To 26 エラーはでなくなりました。 >セルに色を付ける部分は表の開始位置がずれている分、ずらさないといけないです。 この部分についてお付き合いをお願いします。 (素人) 2014/06/13(金) 16:09 ---- >>セルに色を付ける部分は表の開始位置がずれている分、ずらさないといけないです。 って書きましたが、そのままでも大丈夫な気がして来ました。 >この部分についてお付き合いをお願いします。 となってますが、もう一度 本当にずれているか 確認お願いします。 (HANA) ---- マクロを実行したところ、A7:Z7とA11:Z11に水色の塗りつぶしがされました。 現在目視で確認しているのですが、他にも二つのシートで違いのあるセルがあり、 そこは塗りつぶされていません。 なぜでしょうか…? (素人) 2014/06/13(金) 17:53 ---- マクロを実行する時に[ステップイン(S)]を選んで実行して下さい。 [F8]を押す毎に、コードが一行ずつ実行されます。 A7:Z7に相当するループの時の myRow や tbl1(myRow, j) や tbl2(i, j) が 想定しているものと一致するか、確認してみて下さい。 (HANA) 2014/06/19(木) 08:59 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201406/20140610175448.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97018 documents and 608145 words.

訪問者:カウンタValid HTML 4.01 Transitional