|
はじめまして、まっつんと申します。まったくの初心者ですが、宜しくお願いします。
使用バージョンは、Excel 2004 for Mac, ver 11.5 です。
ワークシートが3枚あり、Sheet1, Sheet2, Sheet3とします。
それぞれ、人名と生年月日などが入っているテーブルです。
Sheet1のテーブルに、Sheet2、Sheet3にも登録されている人名があるかどうか印をつけたいのです。
Sheet1は次のような構成です。
A B C
(空欄)人名 生年月日
Sheet2, 3は次のような構成です。
A B
人名 何らかの日付
Sheet1上の人名がSheet2A列にもあれば、Sheet1のA列に行番号と記号「A」を (例1-A)、
Sheet1上の人名がSheet3A列にもあれば、Sheet1のA列に行番号と記号「B」を (例1-B)、
Sheet1上の人名がSheet2A列にもSheet3A列にもあれば、Sheet1のA列に行番号と記号「A/B」を(例1-A/B)、
空欄であるSheet1のA列に自動的に入力して行く、というイメージです。
手動で人名を検索するのにmatch関数を使って上手くいっていたので、VBAでもmatch関数を使ってみました。(特にmatch関数にこだわっているわけではありません)
Dim myCell As Variant
Dim R1, R2 As Variant
Dim Line as Integer
Line = 1
For Each myCell In Worksheets("Sheet1").Range("B2:B110")
R1 = Application.Match(myCell.Value, Worksheets("Sheet2").Range("A2:A100"), 0)
On Error GoTo 0
R2 = Application.Match(myCell.Value, Worksheets("Sheet3").Range("A2:A100"), 0)
On Error GoTo 0
If (R1 <> xlErrNA) And (R2 <> xlErrNA) Then
Worksheets("Sheet1").Cells(Line, 1).Value = (Line & " -A/B")
ElseIf (R1 = xlErrNA) And (R2 <> xlErrNA) Then
Worksheets("Sheet1").Cells(Line, 1).Value = (Line & " -B")
ElseIf (R1 <> xlErrNA) And (R2 = xlErrNA) Then
Worksheets("Sheet1").Cells(Line, 1).Value = (Line & " -A")
Else
Worksheets("Sheet1").Cells(Line, 1).Value = Line
End If
Line = Line + 1
Next
というようなコードを無理矢理書いてみました。たまに初めの一回だけ動いたりするのですが、match関数の引数の型が悪いと、エラー1004で止まります。If文でも型が合わないというエラーになることがあります。
根本的にとっても馬鹿な事をやっているのかもしれませんが、何が悪いのか気付かないくらいの初心者です・・・。アドバイスいただけたら幸甚です。宜しくお願いいたします。
|
|