[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル内の文字色で決まった値を返す。』(ちほ)
セル内に文字色で決まった値を返すことが関数で出来ますか?
例
A B
1 25(赤) ×
2 32(黒) 〇
3 27(黒) 〇
4 45(赤) ×
※()内は文字色です。
どなたか教えて下さい。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
(ちほ) 2018/11/22(木) 17:04
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(木) 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
どういう条件を設定しているのでしょうか
(マナ) 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
・=セル1>=セル2+40
・>=80
・特定の文字から始まる『あ』
などが入っています。
(ちほ) 2018/11/26(月) 12:27
(隠居じーさん) 2018/11/26(月) 12:38
それでよければ 下記コードに書き換えて(前の全て消して今回の分をコピペ) エクセルのリボンの開発タブ マクロ で マクロの一覧表が出ますので 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
が、条件付き書式で着色しているならば、適用先に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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.