『セル内の文字色で決まった値を返す。』(ちほ) セル内に文字色で決まった値を返すことが関数で出来ますか? 例    A    B 1  25(赤) × 2  32(黒) 〇 3  27(黒) 〇 4  45(赤) × ※()内は文字色です。 どなたか教えて下さい。 < 使用 Excel:Excel2016、使用 OS:Windows10 > ---- 補足:例では数値だけですが、実際は数値・文字などあります。 (ちほ) 2018/11/22(木) 17:04 ---- Bが✕の時にAが赤 Bが○の時にAが黒 という状態にしたいのであれば 条件付き書式で出来る (無) 2018/11/22(木) 17:14 ---- それはわかりますが、やりたい事と違います。 (ちほ) 2018/11/22(木) 17:20 ---- VBAですが。。。Sheet1 対象 Option Explicit Sub main() Dim i As Long, r As Range Worksheets("Sheet1").Copy With ActiveSheet .Range("B:B").Clear For Each r In .Range("A1").CurrentRegion i = i + 1 .Cells(i, 2) = .Cells(i, 1).Font.Color Next End With End Sub (隠居じーさん) 2018/11/22(木) 17:48 ---- 赤色を条件付き書式ではなく手塗りしているのであれば、以下のようにユーザー定義関数を使うとか。 【標準モジュール】 Function aaa(R As Range) As String aaa = IIf(R.Font.Color = RGB(255, 0, 0), "○", "×") End Function 【シート上の式】 B1: =aaa(A1) (???) 2018/11/22(木) 17:51 ---- おっと、赤なら×でしたね。○×を逆にしてください。 (???) 2018/11/22(木) 17:58 ---- 隠居じーさん様 ???様 有難うございます。 条件付きで書式を赤に変更しています。 隠居じーさん様 シートのコードにコピペすればいいのですか? (ちほ) 2018/11/22(木) 18:05 ---- いえ 標準モジュールです。 ???さん のコードのほうがよりお望みのものに近いかと思います。 私のは色コードをそのまま返しているだけなので、 ○×の対応は出来ていません。 (隠居じーさん) 2018/11/22(木) 18:15 ---- 隠居じーさん様 有難うございます。 ???様の方でやってみますが、条件付き書式で赤文字でも大丈夫なのでしょうか? コードにコピペして、 【標準モジュール】 Function aaa(R As Range) As String aaa = IIf(R.Font.Color = RGB(255, 0, 0), "○", "×") End Function セルにコピペ 【シート上の式】 B1: =aaa(A1) すれば良いのでしょうか? (ちほ) 2018/11/22(木) 18:28 ---- すみません ^^; 条件付き書式のカラーは FormatConditions とか 使わないとダメっぽいです。 一寸調べてみますね。。。 良くご存知の方の回答をお待ちください m(_ _)m (隠居じーさん) 2018/11/22(木) 19:00 ---- >条件付きで書式を赤に変更しています どういう条件を設定しているのでしょうか (マナ) 2018/11/22(木) 20:51 ---- 標準モジュールへコピペ ("Sheet1")が対象でお試しを  外していましたらお許しを ^^; Option Explicit Private Sub mo_01() Dim i As Long, rr As Range Worksheets("Sheet1").Copy With ActiveSheet For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row If .Cells(i, 1).DisplayFormat.Font.ColorIndex = 3 Then .Cells(i, 2) = "×" Else .Cells(i, 2) = "○" End If Next End With End Sub (隠居じーさん) 2018/11/22(木) 23:44 ---- A列を条件付き書式で色を付けているのなら、その条件を使って◯×を判断すれば数式で出来ます。 マクロの回答はついてるので、マクロでも良いと言う事なら良いですけど、元々関数希望との事なので、 数式の回答を希望されるなら、条件付き書式に使用している条件を提示して下さい。 (sy) 2018/11/23(金) 07:21 ---- (sy)様 条件付き書式は以下の条件が入っています。 ・=セル1>=セル2+40 ・>=80  ・特定の文字から始まる『あ』 などが入っています。 (ちほ) 2018/11/26(月) 12:27 ---- 隠居じーさん様 VBAをコピペしても変わりません。 何か設定ありますか? (ちほ) 2018/11/26(月) 12:29 ---- とりあえず 貼り付けたコードの中に カーソルを移動して、F5を押してみてください。 (隠居じーさん) 2018/11/26(月) 12:38 ---- 隠居じーさん様 全てコピペ出来ていませんでした。 F5押すと違うファイルが立ち上がり 〇×表示されます。 (ちほ) 2018/11/26(月) 13:33 ---- それでよければ 下記コードに書き換えて(前の全て消して今回の分をコピペ) エクセルのリボンの開発タブ マクロ で マクロの一覧表が出ますので sample_01 を選択して実行してください。シート名 Sheet1 が対象です。 (注意※ 元には戻せませんのでご注意ください。バックアップ取ると良いですね) このままで、ユーザー定義関数にすると何故かエラーになる使用だそうです。^^; 関数は詳しい方の回答をお待ちください。 でわ m(_ _)m Option Explicit Sub sample_01() Dim i As Long, rr As Range With Worksheets("Sheet1") For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row If .Cells(i, 1).DisplayFormat.Font.ColorIndex = 3 Then .Cells(i, 2) = "×" Else .Cells(i, 2) = "○" End If Next End With End Sub (隠居じーさん) 2018/11/26(月) 13:58 ---- (sy)様 教えて下さい。 (ちほ) 2018/11/29(木) 10:28 ---- 抽象的な式で書かれても直しようがないので、具体的な式を書くべきです。 が、条件付き書式で着色しているならば、適用先にB列も加えるだけじゃないでしょうか? 例えば「A1:A100」を「A1:B100」にして、式のほうは「A1」等で比較している部分を「$A1」のように列固定に変えるだけです。(とっくに気づいて解決しているものと思ってましたよ…) (???) 2018/11/29(木) 10:44 ---- そうか、同じ色を付けても、また色判定することになるから、適用先を変えても駄目なのですね? そうすると、式で同じ条件を書くのが目的に適ってそうですね。 たとえば「=IF(AND(A1>=B1+40,LEFT(C1,1)="あ"),"○","×")」こんな感じで書けそうですが、具体的な条件を書けないようならば、これを元に考えてみてください。 (???) 2018/11/29(木) 11:04 ---- 今体調不良で回答が満足に出来ないのですいません。 いくつか???な部分があるんですが、 >・>=80  >・特定の文字から始まる『あ』 >=80 としてるので、80以上の数値は当然ですが、「あ」でも「い」でも文字は全て80以上に該当するので、 これだと下の「あ」から始まるに関係なく、文字は全て赤字になってませんか? セル1、セル2、はA列以外のセルの事ですか? 何かお互い相反する条件があるので、セルごとに条件が違うと言う事でしょうか? 今のご提示いただいてる内容では的確な回答は出来ないですけど、 返事をいただいても直ぐには回答出来ないので、いくつか憶測で回答例を提示しておきます。 まずはご提示頂いてる条件がそれぞれバラバラの場合の単独の式 =IF(セル1>=セル2+40,"×","〇") =IF(A1>=80,"×","〇") 指定の文字から始まるは、1文字だけなら =IF(RIGHT(A1,1)="あ","×","〇") 指定の文字が1文字で、検索候補が他にも複数ある場合などは =IF(OR(RIGHT(A1,1)={"あ","い","う"}),"×","〇") 文字数が決まってなく、大文字小文字の区別をしなくて良いなら =IF(COUNTIF(A1,"あ*"),"×","〇") 此方も検索候補が他にも複数なら =IF(OR(COUNTIF(A1,{"あ*","いう*","えおか*"})),"×","〇") または =IF(SUM(COUNTIF(A1,{"あ*","いう*","えおか*"})),"×","〇") 大文字小文字を区別するなら =IF(IFERROR(FIND("あ",A1)=1,0),"×","〇") 此方の複数候補の場合 =IF(OR(INDEX(IFERROR(FIND({"あ","いう","えおか"},A1)=1,0),0)),"×","〇") 3つの条件のどれかに該当すれば良いと言う場合は、 大文字小文字の区別が無ければ、 =IF(OR(セル1>=セル2+40,A1>=80,COUNTIF(A1,{"あ*","いう*","えおか*"})),"×","〇") 大文字小文字を区別する場合は、 =IF(OR(セル1>=セル2+40,A1>=80,INDEX(IFERROR(FIND({"あ","いう","えおか"},A1)=1,0),0)),"×","〇") (sy) 2018/11/29(木) 17:08