- 締切済み
複数の条件で他のシートを検索する
先日教えてくださった方々ありがとうございました。 また質問なんですが、先生方知恵を貸してください。 sheet1 A | B | C | D | E | F | G ======================= 1 | 2 | 3 | AA | BB | 00 | 空欄 1 | 2 | 3 | BB | CC | 11 | 空欄 2 | 3 | 4 | CC | AA | 22 | 空欄 5 | 6 | 7 | BA | CA | 12 | 空欄 sheet2 A | B | C | D ========================== AA | BB | 00 | 3 AD | C | 01 | 4 BB | CC | 11 | 2 CC | AA | 22 | 4 CA | BA | 20 | 5 BA | CA | 12 | 1 このように入力されています sheet1のDEFに完全に一致する組み合わせをsheet2のABCから探し Dをsheet1の空欄Gに出力させる さらにそのGと一致するsheet1のABCがあれば文字色を変える というものです。 分かり難いですが、教えてください。 関数のVLOOKUPで出力までは出来たのですが、 文字色を変えることが出来ませんでした。 マクロで全部やってしまった方が早そうなので知恵をお貸しください。 。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
どうしても VBAマクロでってことなら # 字下げには全角スペースを使っています Sub Macro1() dim s1(1 to 6) as String, s2 as string dim n as integer, m as integer, k as integer for n=1 to 6 ' シート2の検索データを文字配列に構築 s1 = Sheet2.Cells(n,1).value & Sheet2.Cells(n,2).value _ & Sheet2.Cells(n,3).value next for n=1 to 4 ' Sheet1のD:Fを文字列のする s2 = Sheet1.Cells(n,4).value & Sheet1.Cells(n,5).value _ & Sheet1.Cells(n,6).value for m= 1 to 6 ' 文字配列と文字列を比較 if s1(m) = s2 then ' 一致データがあったら Sheet1.Cells(n,7).value = Sheet2.Cells(m,4).Value for k=1 to 3 ' Sheet1 A:Cを検索する if Sheet1.Cells(n,k).value = SHeet1.Cells(n,7).Value then ' 一致するセルがあった場合 フォントの色を変更 Sheet1.Cells(n,k).Font.Color = RGB( 255, 0, 0 ) ' 複数一致するセルがあるなら Exit forをコメントアウト exit for end if next exit for end if next next End Sub といった具合でしょう … 表の中のデータが変わるのであれば 数式で解決したほうが良いと思いますよ
- redfox63
- ベストアンサー率71% (1325/1856)
数式と条件付書式でやったほうが楽ですよ たとえば G1の数式ならsumproductを使って抽出します =SUMPRODUCT((Sheet2!$A$1:$A$6&Sheet2!$B$1:$B$6&Sheet2!$C$1:$C$6=D1&E1&F1)*1,Sheet2!$D$1:$D$6) とします G1:G4を選択 F2をおして Ctrl+Enterで数式をコピーします A1を選択して 書式 > 条件付き書式で 『セルの値が』『次の値と等しいとき』『=$G1』としOK A1を選択した状態で ツールバーの刷毛のようなマーク『書式のコピー/貼り付け』をクリック その状態で B1,C1を選択 で書式のみコピーします 同様に A1:C1を選択して 先ほどのアイコンをクリック A2:C4を選択するようにしてください 以上ですが …
お礼
遅くなってすいません。 結局数式で行うことにしました・・。 データに統一性がないというのはこんなに大変だとは↓ ありがとうございました!