• 締切済み

EXCELの式について

EXCELの条件付き書式 OR VLOOKUP?の仕方を教えて下さい。 下記の画像のように、 シート1には 名前を入力し、右に緑でも何でもいいので、 統一した印をつけた時に、シート2 アルファベット順 もしくは アルファベット順じゃなくてもいいので 印の付いた名前が反映るす方法はありますか? 数式で出来るのであれば 数式で教えてほしいです。 お願いいたします。 PCは自宅用が EXCEL2007で 会社で使用したいのですが、 会社のは 2000です。 どちらの2007でしか出来ないようであっても 教えていただきいです!

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 パターンを認識するにはVBA(マクロ)記述しかないので、これを文字列(仮に「○」)にすると関数で抽出できますが如何でしょうか。 仮にSheet2に以下の様な配列数式を入力、入力完了時にshift+ctrl+enterキーを同時押下、下方向に必要分コピーして下さい。 =IF(COUNTIF(Sheet1!A:A,"○")>=ROW(A1),INDEX(Sheet1!B:B,SMALL(IF(Sheet1!A$1:A$100="○",ROW(Sheet1!A$1:A$100),9999),ROW(A1))),"")

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルの経験不足と思うが、エクセルの関数の本質(と言うか制約)を判ってない。 関数では「セルの値!」を参照して、それを元に計算したり、判別したりするものです。 一方セルの書式など他にもセルの属性が多数あることが判ってないのだろう。そしてそちらの方(セルの値意外で)は関数では参照できない(使えない)。 コピーの機能と大きく違う点です。 質問画像のSheet1のB列に存在するなら、Sheet2のそのセルに色をつけるならできる。 しかし存在する場合A列の色(書式)をSheet2の該当行に持ってくることは出来ない。 >右に緑でも何でもいいので 緑と文字例えば○と全然ちがってくるのだ >アルファベット順 もしくは アルファベット順じゃなくてもいいので VLOOKUPの第4引数をFALSE型で使う場合、並び順は関係ないのだ。良く関数VLOOKUPの解説を読むこと。 >数式で出来るのであれば VBAならできる余地があるが、勉強してないのでしょう。であれば丸投げでしょう。 ーー 他シートに名簿があるということで初心者には難しい Sheet1 A2:A6 山田 大川 鈴木 木村 田中 を作る 挿入ー名前でこの範囲を「名簿」と定義する。(Sheet2から他シート参照のため) Sheet2のA2:A6に 木村 鈴木 田中 木下 浅野 とあるとして Sheet2のA2:A6を範囲指定して(A2がアクチブになっている) 書式ー条件付き書式ー数式が 数式を =NOT(ISNA(VLOOKUP(A2,名簿,1,FALSE))) 書式をセルパターンでライトブルーなど設定、OK-OK これで 木村 鈴木 田中 のセルに色が付く。 2003までの説明になっているが2007でも対応の操作を探すこと。 「存在する」をNOT(ISNA(VLOO・・  などとするのは、初心者には難しいだろうが、関数の経験を増やしてまねするほかない。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 当方使用のExcel2003までのバージョンではセルの色を抽出条件にできません。 Excel2007は手元にないのでできるかどうか判りませんが、VBAでの方法の一例になります。 Sheet1のA列に何らかの色(同じ色とします)がついているB列のデータをSheet2のA2セル以降に表示させ 昇順にソートするようにしてみました。 Sheet1のSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 2 To ws1.Cells(Rows.Count, 2).End(xlUp).Row If ws1.Cells(i, 1).Interior.ColorIndex <> xlNone Then ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) = ws1.Cells(i, 2) End If Next i j = ws2.Cells(Rows.Count, 1).End(xlUp).Row ws2.Range(Cells(2, 1), Cells(j, 1)).Select Selection.Sort key1:=Cells(2, 1), order1:=xlAscending End Sub 'この行まで こんな感じではどうでしょうか?m(__)m

関連するQ&A

専門家に質問してみよう