[[20240404172832]] 『隣のセルの色によって特定の文字列を入力する関数』(いろとりどり) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『隣のセルの色によって特定の文字列を入力する関数は出来ますか?』(いろとりどり)

隣のセルの色を見て指示した文字列を入力する関数を作ることは可能でしょうか?
指示する文字列は別のシートに準備して、赤の場合は、シート1のA1、青の場合は、シート1のA2参照という形に出来ればと思ってます。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


断言しませんが、
 関数(数式)だけだと多分無理。
 マクロ(ユーザ定義関数を含む)なら可能。
 条件付き書式で色を付けているとかなら、条件のセルを参照すればいいだけなので可能。

という感じだとおもいます。

(もこな2 ) 2024/04/04(木) 21:02:13


返信遅くなりまして申し訳ありません。ご連絡いただきましてありがとうございます。
隣のセル自体は、条件付きで色を変えてます。例えば、犬、猫、トラなどであれば赤色に変えて、大根、キャベツ、人参であれば、青色に変えるという感じです。そして、今回特定の文字列というのは、ここでいう動物や野菜というカテゴリーを特例の文字列と呼んでいて、こちらを入力したいです。この形であれば出来そうでしょうか?
(いろどりどり) 2024/04/08(月) 09:13:34

>指示する文字列は別のシートに準備して、赤の場合は、シート1のA1、
>青の場合は、シート1のA2参照という形に出来ればと思ってます。
これを明確にしてそれと照らし合わせて説明されたらどうですか。
(???) 2024/04/08(月) 11:00:13

 条件付き書式の 条件式を提示されたらいかがですか?

 ユーザー定義関数であれば、InStr関数で文字列検索を行うことになります。
 式でも対応できますね。
(xyz) 2024/04/08(月) 11:09:33 

条件付き書式のルールは以下で書式の指定で色を変えてます。
=SUM(IFERROR(FIND(条件付き書式!$X$2:$X$26,INDIRECT("RC",FALSE)),0)*(条件付き書式!$X$2:$X$26<>""))>0

こちらの説明でわかりますでしょうか?うとくてすみません。
(いろとりどり) 2024/04/08(月) 11:40:41


 条件付き書式が設定されているセル(隣のセル)がA2だとして。
 =IF(SUM(IFERROR(FIND(条件付き書式!$X$2:$X$26,A2),0)*(条件付き書式!$X$2:$X$26<>""))>0,
    Sheet4!$A$1,
    IF(SUM(IFERROR(FIND(条件付き書式!$Y$2:$Y$26,A2),0)*(条件付き書式!$Y$2:$Y$26<>""))>0,
       Sheet4!$A$2,
       ""
    )
  )
 を配列数式で。(青はY列にあるという前提で。)
 もっとよいものがありそうです。今のものを活用する趣旨です。
 # 2024/04/09 修正。余りにも雑でした。
 # 完全一致ならMATCHを使ってもっと簡単に書けますかね。

(xyz) 2024/04/08(月) 12:41:20


 Excel365なので、上の回答よりよいものがありそうです。(私は持たないので)
 他の方からの回答をお待ちください。
(xyz) 2024/04/08(月) 13:04:00

 >条件付き書式のルールは以下で書式の指定で色を変えてます。
 >=SUM(IFERROR(FIND(条件付き書式!$X$2:$X$26,INDIRECT("RC",FALSE)),0)*(条件付き書式!$X$2:$X$26<>""))>0
 >こちらの説明でわかりますでしょうか?うとくてすみません。
 これは多分「赤」用なんでしょうね?

 他に「青」用もありますよね。
 その条件式はどうなっていますか?

(半平太) 2024/04/08(月) 19:31:50


 確認だけ

 >カテゴリーを特例の文字列と呼んでいて、こちらを入力したいです。
 こちらを入力したい、の「こちら」とは「動物」や「野菜」ってこと?

 だとして・・・

 1)条件付き書式!$X$2:$X$26 には何が入力されているのか?
   犬、猫、トラなど?

 2)条件付き書式を設定しているセルには何が入力されるのか?
   犬、猫、大根、キャベツとかってこと?
   それとも「ああ犬いい」のように、文字列の一部に犬とか大根とかが含まれるってこと?

 3)条件付き書式を設定しているのは何というシート?
  A1とかB1とか具体的なセル番地も

 4)カテゴリーは全部で何種類あるのか?

 5)特定の文字列について
   >指示する文字列は別のシートに準備して、
    >赤の場合は、シート1のA1、青の場合は、シート1のA2参照という形に出来ればと思ってます。
   別シートにする理由は?

 とりあえず以上です
(笑) 2024/04/08(月) 22:00:33

ご連絡ありがとうございます。以下ご確認お願いいたします。
(1)はい、そのとおりです。
(2)文字列の一部ではなく、犬、猫、トラです。
(3)シート名は「サマリ」、I2からI5000セルです。
   シート名の「条件付き書式」のB2からB50には犬、猫、トラの参照先程があります。
   また、私がお送りした条件式は一例で、赤以外にも青など25種程あります。
(4)25種あります
(5)サマリシートのデータが多いため、別シートにしてます。
(いろどりどり) 2024/04/10(水) 11:30:55

 まだ分からない点がありますので、追加で質問します。

 ■「サマリ」シート
    条件付き書式が設定されているシート。
    I2:I5000セル。
    結果を書きこむセル(関数をセットするセル)はどこですか?   --- (Q1)

 ■「条件付き書式」シート
    条件付き書式の条件指定に使用するデータを保持したシート。
    セルはB2:B50なんですか?

    25種類の条件指定に使うセルはそれぞれどこですか?           --- (Q2)
    (以前のX2:X26というものとの関係は?)
    列挙しなくても結構。考え方を書いて下さい。

    >条件式は一例で、赤以外にも青など25種程あります。
    どのような形式のものか説明下さい。                         --- (Q3)

 ■ 結果として表示すべき文字列はどこにあるんですか?           --- (Q4)
    以前の
    >赤の場合は、シート1のA1、青の場合は、シート1のA2参照
    に相当する情報を記載して下さい。
    25種類あるんですよね。すべてを説明して下さい。

    ・25種類がまとまった位置にあると便利かと思います。
    ・また、それぞれの色をそのセルに着けることは可能ですか?    --- (Q5)

 # 以下は無視して結構です。
 # 部分一致ではなく完全一致ということのようなので、
 # 条件式は、
 # =IFERROR(MATCH(A2,条件付き書式!$X$2:$X$26,0),0)>0
 # または、
 # =IFERROR(MATCH(A2,条件付き書式!$X$2:$X$26,0),False)
 # のようなものでいいはずですね。(セル位置は前のステータスに依っています) 
(xyz) 2024/04/10(水) 12:34:38

 25種類もあるとマクロで色を取得したほうが手っ取り早い気がします。
 別途、「色」と「表示したい文字列」の組み合わせを用意しておけば、
 そう難しいことではありません。
 ただし、色は25種類もあると区別が難しいので、
 正確な「色」と「表示したい文字列」の情報が必須です。

(xyz) 2024/04/10(水) 12:46:52


 条件付き書式の設定から色を読み込んで、マクロで対応する案です。

 【準備】
 25種の条件付き書式の適用順に、
 それが適用されたときに表示させたい「結果文字列」を
 特定シート(例えば"結果文字列"シート)のA列に書き込んでおきます。

 【マクロコード例】
 動作確認していませんが、アイデアはこんな感じです。

 Sub test()
     Dim k As Long
     Dim f As FormatConditions
     Dim dicColor As Object
     Dim r        As Range      ' add(*)
     Dim p&
     Dim col&

     '' key : RGB数値 ⇒  item :  表示文字列 の辞書を作成
     Set dicColor = CreateObject("Scripting.Dictionary")
     dicColor(16777215) = ""    ' add(*)
     With Worksheets("サマリ").Range("I2:I5000")
         Set f = .FormatConditions
         For k = 1 To f.Count
             col = f.Item(k).Interior.Color
             p = p + 1
             dicColor(col) = Worksheets("結果文字列").Cells(p, "A")
         Next
     End With

     '' 条件付き書式セル色を読み取り、その右のセルに「結果文字列」を書き込む
     For Each r In Worksheets("サマリ").Range("I2:I5000")
         r.Offset(0, 1) = dicColor(r.DisplayFormat.Interior.Color)
     Next
 End Sub
 # 04/10  14:22 コード一部追加しました。(*)
(xyz) 2024/04/10(水) 13:29:06

 ちなみに、ユーザー定義関数にするのは、できるはずですが、
  >=SUM(IFERROR(FIND(条件付き書式!$X$2:$X$26,INDIRECT("RC",FALSE)),0)*(条件付き書式!$X$2:$X$26<>""))>0
 という条件付き書式では、なぜか結果がうまく得られません。
 マクロ環境そのものが不安定になります。
 色々と昨日、試行錯誤していましたが、原因不明です。

 どうやら、INDIRECT("RC",FALSE)をつかっているところが原因のようで、
 普通のセル参照(A2のような)であればうまくいきます。
 もし時間がとれれば、別スレでも挙げて、情報共有しようかと思っています。

 一括処理のマクロで当面対応するのがよいと思います。

(xyz) 2024/04/10(水) 13:46:19


 >(4)25種あります
 25色に分けるってこと?

 よくわかりませんけど
 条件付き書式シートを下のようにはできないんですか?
 ※C列にカテゴリー名

	B	 C
2	犬	 動物
3	猫	 動物
4	トラ	 動物
5			
・			
51	大根	 野菜
52	キャベツ 野菜
53	人参	 野菜
54			
・			

 サマリシートのカテゴリー名表示
 =XLOOKUP(I2,条件付き書式!B:B,条件付き書式!C:C,"")&""
 とか
 =IFERROR(VLOOKUP(I2,条件付き書式!B:C,2,FALSE)&"","")
 とか

 ■条件付き書式の数式も
 =VLOOKUP(I2,条件付き書式!B:C,2,FALSE)="動物"

 こんな感じでできますね。

 参考まで
(笑) 2024/04/10(水) 14:39:24

 条件付き書式は ↑ なことしなくても
 サマリシートのJ列にカテゴリー名表示だとして

 条件付き書式の数式
 =J2="動物"

 これでできますね。

 参考まで
(笑) 2024/04/10(水) 15:26:31

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.