[[20060526161928]] 『[[20060524130237]]の差分方法の応用を教えてくだ』(みりん) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

[[20060524130237]]の差分方法の応用を教えてください』(みりん)

 おしえてください。
[[20060524130237]]でチョコさんが質問した↓

「教えてください。

 A列に数字が2500件書いてあります。
 B列にも同様な数字が2000件
 C列にA列からB列にない数字を結果としたかたちで表示できるようにするには
 どうすれば良いでしょうか?」

 を応用した

 A列に日付
 B列に数字
 で成り立つデータと
 C列に数字
 D列にID(数字)
 E列に文字
 で成り立つデータから
 B列CE列で差分をかけて結果を
 F列に→A列の日付 G列に→B列の数字 H列に→D列のID(数字)
 が結果として出てくるようにしたい

 ・・・・のですがやり方がわかりませんでした。
 是非、ご教示いただけると助かります。
 よろしくお願い致します。

 データ量は5000件程度です。


 こちらも参考になるかもしれませんので、ご覧下さい。↓     (LOOKUP)
[[20050224120843]]『リスト1とリスト2を比較して無いものを抽出』(ヨロ)


 すみませんいまきづいたのですが
 差分じゃなくって、同じ数字データを表示するでした。
 すみません。[[20060524130237]]の応用ではないですね。間違えてしまったです。

 改めてですが↓

 A列に数字
 B列にID(数字)
 C列に文字
 で成り立つデータと
 E列に日付
 F列に数字
 で成り立つデータから
 A列とF列で同じ数字がある結果を
 F列に→E列の日付 G列に→F列またはA列の数字(A列とF列は一致だと思ったので) H列に→B列のID(数字)
 をひょうじする
 でした。
 ご迷惑おかけしますよろしくお願い致します。


 フィルタオプションの検索条件は、不一致の場合も一致の場合も差異はわずかです。
 =COUNTIF(……)=0の=0を削除しますと、一致したものが、抽出できると思います。
 また、A列とF列の見出しを同じものを使用すれば、そのまま、F列が検索条件として、 
 利用できるようにも思います。                        (LOOKUP)

 ちょっとみりんさん、改めてですが↓のあと良く読み直してくらはい。
 おかしいとおもいまへんか?
 つまりこれはF列にE列の日付を上書きするっちゅうことでっか?
 諸肌脱いでお力添えをと勇んでみるものの、「ひょっとして間違いちゃうんかいな
 ぁ、折角ええのん提供してもまたやり直さなあかんのちゃうやろか」と、つい腰が引け
 てしまいまんがな(笑
 差分のマクロを提供した手前、なんとか・・とは思いますけど・・・
       (弥太郎)


 LOOKUPさんありがとうございます。
 弥太郎さんご指摘ありがとうございます。
 たしかにおかしいですね。お・・お恥ずかしい限りです。

 A列に数字
 B列にID(数字)
 C列に文字
 で成り立つデータと

 D列に日付
 E列に数字
 で成り立つデータから
 A列とE列で同じ数字がある結果を
 F列に→D列の日付 G列に→E列またはA列の数字 H列に→B列のID(数字)
 をひょうじする  

ですね。すみませんF列が重なってしまいました。
(みりん)


 で、なんでっしゃろか、以下のようなデータが並んどるんでっか?
 またA列内に重複データ無し、E列内にも重複データなしと考えてもよろしいか?

 	  A	  B	  C	         D	E
 1	No	ID.No	氏名	        日付	 No
 2	1111	0001	J.ウエイン	1/2	1113
 3	1112	0002	K.ダグラス	1/4	1222
 4	1113	0003	G.クーパー	1/5	1523
 5	1114	0004	M.モンロー	2/1	1114
 6	1115	0005	J.ディーン	2/10	1123
 7	1116	0006	E.カトリーナ	2/20	1234
 8	1117	0007	S.ローレン	2/22	1230
 9	1118	0008	A.ドロン	         3/1	1240
 10	1119	0009	G.ペック	         3/2	1120
 11	1120	0010	K.ノバック	3/5	1155
              (弥太郎)


A列、E列内には重複データはないです

         A       B     C    |  D      E
 1     a@  ID   名   | 日付   
 2    123-1  01  みかん | 5月  122-2
 3    161-2  02  りんご | 6月  123-1
 4    122-2  03  めろん | 3月  126-2
 5    121-1  04  すいか | 4月  121-1
 6    124-1  05  とまと | 8月  125-1
                |
    ↑名前リスト        ↑登録月度リスト
               
A〜Cがひとつののデータ一覧で
D〜Eがもうひとつのデータ一覧といったかたちです。
A2の数字とE3の数字が同じものだとした場合だったら
結果として
         F       G     H    
 1    日付    a@  ID   
 2   6月   123-1   01  
と出るようにしたいのです。

お願い致します
(みりん)


 こんな塩梅でっしゃろか?
 但しあんまり検証しとりまへんから不具合があれば申してくださいまし(笑
 標準モジュールへコピペします。
 データを抽出したいセルにみりんと書いて(このばやいやとF1のセルに)
 そのセルをアクティブにした状態でmacroAを実行してくらはい。
        (弥太郎)
 あ、それと抽出データ量が1500行を超えるようやとチョット手ぇを加えなあきまへん。
 '-------------------------------
 Option Explicit
 Sub macroA()
    Dim dic As Object, flag As Boolean
    Dim i As Long, n As Long, j As Long
    Dim tbl, key

    If ActiveCell.Value <> "みりん" Then Exit Sub
    tbl = Cells(2, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1, 5).Value

    Set dic = CreateObject("scripting.dictionary")
    For i = 1 To UBound(tbl, 1)
        If Not IsEmpty(tbl(i, 1)) Then
            dic(tbl(i, 1)) = Array(tbl(i, 2))
        End If
    Next i
    For Each key In dic.keys
        flag = False
        For i = 1 To UBound(tbl, 1)
        If Not IsEmpty(tbl(i, 5)) Then
            If key = tbl(i, 5) Then
                dic(tbl(i, 5)) = Array(tbl(i, 4), tbl(i, 5), dic.Item(key)(0))
                flag = True
                Exit For
            End If
        End If

        Next i
        If Not flag Then dic.Remove key
    Next key
    If dic.Count > 0 Then
        ActiveCell.Offset(1).Resize(dic.Count, 3) = Application. _
                                Transpose(Application.Transpose(dic.items))
    End If
 End Sub


 弥太郎さんありがとうございました。
 早速、教えていただいた手順お通り、F1を『みりん』にしてアクティブ状態でマクロ実行してみましたが
 メッセージボックスが表示されてしまいました(400と書いてありました)
 データ量は147行(タイトル業含む)でためしに行ってみたのですがだめだったようです。

 すみません。ご迷惑おかけします。
(みりん)

 本日はどうもスカッといきまへんなぁ・・・ぶつぶつ 
http://ryusendo.no-ip.com/cgi-bin/upload/upload.html
 ↑へ行って保存したうえ 試してくらはい。ちゃんと動きまっせぇ。
        (弥太郎)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.