2

たとえば、次の形式のスプレッドシートがあるとします。

Sheet 1                    |  Sheet 2
name          email        |  name          email
Mike Jones    mikej@mail   |  John Smith    jsmith@mail    
John Smith    johns@mail   |  Mike Jones    mjones@mail    
John Public   jpublic@mail |  Chris Paul    cpaul@mail        
Chris Paul    cpaul@mail   |  John Public   jpublic@mail
Jim Abram     jambram@mail |
Tim Toole     ttoole@mail  |

そして、一致する名前を持つエントリの電子メールを比較し、一致しない名前を表示したい (必要に応じて、すべてのデータを 1 つのシートに入れることができます) ので、基本的には、次のように出力されます。

マイク・ジョーンズ

ジョンスミス

数式でこれをやろうとしていますが、マクロを使用する必要があると思います...誰かがこのような例を教えてもらえますか?

私はこれらの行に沿って何かをしようとしています:

=IF(ISERROR(MATCH(Sheet1!A1,Sheet2!$A$1:$A$5,0)),(IF(ISERROR(MATCH(Sheet1!B1,Sheet2!$B$1:$B$5,0)), Sheet1!A1, ""),"")

これをマクロで表現してみたいと思います。

4

3 に答える 3

0

これは、迅速かつ簡単な式の解決策の試みです!!

  1. シート 3 を作成します。
  2. 名前セル A1 = allnames. 列Aにすべての名前(シート1 +シート2)を貼り付けます
  3. 名前セル B1 = 電子メール。
    B2 = と入力します。IF(VLOOKUP(A2,Sheet1!$A$1:$B$7,2,0<>VLOOKUP(A2,Sheet2!$A$1:$I$5,2,0),VLOOKUP(A2,Sheet1!$A$1:$B$7,2,0),"")

  4. 列 B をコピーし、列 C に「値」として貼り付けます

  5. "#N/A"で置き換えます""
  6. 列 C をフィルタ""
  7. 列 A で希望する結果を確認してください。
于 2013-03-11T19:20:41.103 に答える
0

シート 1 に列を挿入し、フィルター処理して重複を見つけても問題ない場合は、次のようにします。

name        email           Duplicate Count
Mike Jones  mikej@mail          0
John Smith  johns@mail          0
John Public jpublic@mail        1
Chris Paul  cpaul@mail          1
Jim Abram   jambram@mail        0
Tim Toole   ttoole@mail         0

重複カウント列には次のものがあります。

=SUMPRODUCT((D:D=A2)*1,(B2=E:E)*1)

列 D と列 E は、上記の 2 番目のテーブルです。

于 2013-03-11T15:02:33.950 に答える
0

一致をワークブックに保存する短いコードを次に示します。「Microsoft Scripting Runtime」への参照を含める必要があります。

Sub Compare(rng1 As Range, rng2 As Range, rngTarget As Range)
    Dim d As New Scripting.Dictionary
    Dim rngTemp As Range
    Const cMailCol As Long = 2

    For Each rngTemp In rng1.Columns(1).Cells
        d.Add rngTemp.Offset(cMailCol - 1).Value, rngTemp.Value
    Next

    For Each rngTemp In rng2.Columns(1).Cells
        If d.Exists(rngTemp.Offset(cMailCol - 1).Value) Then
            rngTarget = d(rngTemp.Offset(cMailCol - 1).Value)
            Set rngTarget = rngTarget.Offset(1)
        End If
    Next
End Sub

Compare [A2:B7], [D2:E5], [G2]最初の 2 つの範囲の一致を G2 に保存するように呼び出し ます。

于 2013-03-11T15:28:03.747 に答える