[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セル同士の色をリンクさせたい』(CHATA)
色々調べてみたのですが、分からないのでお分かりになる方、お願い致します。
題名の通り、セル同士の色をリンクしたい、という内容です。
下記の通りにやりたいのですが、3.が出来ません。
1.シート1のA1セルにドロップダウンリストを作成し、『大』『中』『小』が選択できるようにする。
2.シート1のA1セルで『大』『中』『小』いずれか選択すると、シート2のA1セルはその選択に応じた色に変わる(たとえば『大=赤』『中=青』『小=黄』)
3.上記2.に連動して、シート1のA2セルも上記2.と同じ色で表示させたい
1.2.は条件付き書式の設定で出来ましたが、3.のやり方がどうも分からず。。。
1.選択し、2.セルの色が変わる。その結果と連動して3.のセルも2.のセルと同じ色に変えたいのです。
ドロップダウンリスト以外のセルは空白、という前提でセルの色をリンクさせることはできるのでしょうか。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
なぜシート1のA1セルに連動してシート1のA2セルとシート2のA1セルの色を変える、ではだめなのだろうか? (ねむねむ) 2022/12/08(木) 14:58:52
マクロでも構わないのだろうか? (ねむねむ) 2022/12/08(木) 15:19:12
シート名がシート1、シート2だとして。 まずシート1のシートタブの右クリックからコードの表示を選択してVBEの画面が表示されたらそこに下記を張り付ける。 Private Sub Worksheet_Change(ByVal Target As Range) If Application.Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
Range("A2").Interior.Color = Worksheets("シート2").Range("A1").DisplayFormat.Interior.Color
End Sub そうしたらVBEの画面を閉じて完成。
でどうだろうか? (ねむねむ) 2022/12/08(木) 15:39:51
おそらく(Target, Range("A1")は最初の質問の1.を指すコードだと思うのですが、2.の結果を3.に反映するだけの場合はどのようなコードになるでしょうか。
※シート1"A2"のカラーはシート2"A1"のカラーとする、というだけを指定するコードです
また、複数セルを同じ条件にする場合はA2:A6、今後行列を追加した場合は$A$2:$A$6のように指定すれば良いのでしょうか
(CHATA) 2022/12/08(木) 16:05:26
最終的に何をしたいのかを挙げてくれ。 少なくとも条件付き書式の場合は上で回答したものでいいはずだが。
>また、複数セルを同じ条件にする場合はA2:A6、今後行列を追加した場合は$A$2:$A$6のように指定すれば良いのでしょうか これも具体的に説明してくれ。 シート2のA1セルの色をシート1のA2セルからA6セルに反映させるのか、それとも シート2 シート1 A1セル A2セル A2セル A3セル A3セル A4セル 〜 といった対応で反映させるのかそれとも他のパターンなのか不明。 (ねむねむ) 2022/12/08(木) 16:20:19
少なくともセルの色を変更した場合に走るイベントがないためシート2のセルの色を変えるとシート1のセルの色を 追従させるのは難しいと思う。 (ねむねむ) 2022/12/08(木) 16:24:46
この数式をSheet2の必要なセルに条件付き書式させたら出来ました。
やりたかったことと違ったら申し訳ない。
(ngk) 2022/12/08(木) 17:09:13
A1の文字が選択された文字の時に色を付ける条件式書式をA2に入れてみるのはどうだろうか。
判定は色でなく文字なわけだし。
(ngk) 2022/12/08(木) 17:14:05
条件を入力するとシート1のC列に3色で表示させる表をエクセルで作りたい。
例えばこの様な表を作りたい。
■シート1
条件入力欄(A列に質問、B列にドロップダウンで選択項目)、色による判定一覧表(C列)
A B C
1 空腹感 有 無 少し 食事(シート2の結果を色で表示)
2 眠気 有 無 少し 睡眠(シート2の結果を色で表示)
3 かゆみ 有 無 少し 風呂(シート2の結果を色で表示)
■シート2
質問に対して3色で表示欄を設ける。
A1〜3はセルを連結させる。A4〜6、A7〜9も同様
A B
1 朝食
2 食事 昼食
3 夕食
4 3H
5 睡眠 +2H
6 +2H
7 週3日
8 風呂 +2日
9 +2日
シート1のB1で有と答えると、シート2のA1、B1〜3は全て赤になる、少しと答えるとA1、B1、B3が青、無と答えるとA1、B1が黄色に表示される。シート1のC欄にその色をリンクさせたい。リンクは、シート2の連結したA1セルの色をC1欄とリンクさせる。
なので、シート2のA1で表示した色とシート1のC1をリンクさせたい。
上記の表の通りにシート1のC列とシート2のA列は同じ文言とする予定です
また、質問を増やしたいときシート1のA1とA2間に行列を挿入して質問を加えても、以降がズレない様にあらかじめしておきたい。数式で$を使うのと同様に、、、
以上です。
(CHATA) 2022/12/08(木) 17:37:14
>シート2のA1で表示した色とシート1のC1をリンクさせたい。 >上記の表の通りにシート1のC列とシート2のA列は同じ文言とする予定です
やりたいことのエッセンスはそこですよね?
標準モジュールに後記のVBAを貼り付ける。
シート1のC1に下式を入力する。
=setClr(Sheet2!A1,A1:B1)
'----標準モジュールに貼り付けるVBA----- Function setClr(rRef As Range, Optional rEvent As Range) setClr = rRef.Value Application.Evaluate ("+setColor(" & rRef.Address(, , , True) & "," & Application.Caller.Address & ")") End Function
Private Function setColor(rRef As Range, rTgt As Range) rTgt.Interior.Color = rRef.DisplayFormat.Interior.Color rTgt.Font.Color = rRef.DisplayFormat.Font.Color End Function
(半平太) 2022/12/09(金) 15:53:18
勉強させていただいています。少し細かい話で恐縮です。
指摘通りに設定したあとで、 Sheet1のC1セルに設定した =setClr(Sheet2!A1,A1:B1) の第一引数であるSheet2!A1の値を変更(理由は聞かないで下さい)すると、 setClrが再計算されますね。 このとき、 なぜか、意図していないSheet2シートのC1セルにも色(Sheet2!A1の色)が付きます。
この例では、Sheet2!A1の値は変動させることはたぶんないでしょうけど、ちょっと気持ちが悪いです。
Function setClr(rRef As Range, Optional rEvent As Range) Dim sh As Worksheet setClr = rRef.Value Set sh = Application.Caller.Parent sh.Evaluate ("+setColor(" & rRef.Address(, , , True) & "," & Application.Caller.Address & ")") End Function などとして、評価(Evaluate)を実行する際の"環境"を、ワークシートレベルに限定すると避けられるようです。 (または、rTgtもシート指定をつけるかでしょうか)
# 以下、脇道の感想です。 # 質問者さんの考えているワークシートのレイアウトは、とても難しいですね。 # 入力者が理解できるでしょうか。 # Sheet1とSheet2を行き来するのもわかりにくいでしょうし、二つのシートの位置づけがわかりませんでした。 (γ) 2022/12/10(土) 07:52:45
> なぜか、意図していないSheet2シートのC1セルにも色(Sheet2!A1の色)が付きます。
以前、皆さんと検討した時、Sheetで修飾すべきとの結論だったのですが、 今回、ApplicationとWorksheetの違いがどこで出るのか分からなかったので 深く検討しないままApplicationを採用してしまいました。
SetColorにとっては、あくまでもその時点でのアクティブなシートが基準になるので シート跨りのユーザー定義関数は、どのシートのセルなのか限定しないとマズかったです。
これはおっしゃる通りです。確認しました。 ↓ >評価(Evaluate)を実行する際の"環境"を、ワークシートレベルに限定すると避けられるようです。 > (または、rTgtもシート指定をつけるかでしょうか)
(半平太) 2022/12/10(土) 09:54:21
コメントありがとうございました。 (γ) 2022/12/10(土) 10:42:22
こんにちは
>シート1のB1で有と答えると、シート2のA1、B1〜3は全て赤になる、少しと答えるとA1、B1、B3が >青、無と答えるとA1、B1が黄色に表示される。シート1のC欄にその色をリンクさせたい。リンクは、シート2 >の連結したA1セルの色をC1欄とリンクさせる。
言っている事が、非常に解かり難いので…推測ですが 上記の文章を整理して
・シート1のB1で「 有 」と答えると、 シート2のA1〜A3、B1〜B3 は全て「 赤色 」になる、
・シート1のB1で「 少し 」と答えると、 シート2のA1〜A3、B1〜B3 は全て「 青色 」になる、
・シート1のB1で「 無 」と答えると、 シート2のA1〜A3、B1〜B3 は全て「 黄色 」になる、
>食事(シート2の結果を色で表示)
これは、矛盾があるので無視します。
>シート1のC欄にその色をリンクさせたい。
これも、意味がさっぱりわからないので無視します。
>なので、シート2のA1で表示した色とシート1のC1をリンクさせたい。
結局...シート1のB1の選択に応じて、 シート1のC1と、シート2のA1〜B3 セルの背景色が同じになれば 良いと、推測する
>条件付き書式の設定で出来ましたが、3.のやり方がどうも分からず
条件付き書式を、VBAで設定出来ないことはないが、無駄にコードが 長くなるのでしません。
◆条件 1行目の見出しは無いとする。 データの入力規則に、「 有・無・少し,有,無,少し 」と設定する
◇未選択のシート1の状態
|[A] |[B] |[C] [1]|空腹感|有・無・少し|食事 [2]|眠気 |有・無・少し|睡眠 [3]|かゆみ|有・無・少し|風呂
下記のマクロを、シート1モジュールに入れて B列の選択に応じて、何処に背景色が付くか確認してください。 やりたい事が違った場合はご容赦を…
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet, i& Set ws = Sheets(2) If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub If Target.CountLarge <> 1 Then Exit Sub Application.EnableEvents = False For i = Target.Row * 3 - 2 To Target.Row * 3 Select Case Target.Value Case "有" '' 赤系色 rgbMistyRose Target.Offset(, 1).Interior.Color = RGB(255, 228, 225) ws.Range(ws.Cells(i, 1), ws.Cells(i, 2)).Interior.Color = RGB(255, 228, 225) Case "無" '' 黄系色 rgbLightYellow Target.Offset(, 1).Interior.Color = RGB(255, 255, 224) ws.Range(ws.Cells(i, 1), ws.Cells(i, 2)).Interior.Color = RGB(255, 255, 224) Case "少し" '' 青系色 rgbAzure Target.Offset(, 1).Interior.Color = RGB(240, 255, 255) ws.Range(ws.Cells(i, 1), ws.Cells(i, 2)).Interior.Color = RGB(240, 255, 255) Case Else '' 色なし xlNone Target.Offset(, 1).Interior.ColorIndex = xlNone ws.Range(ws.Cells(i, 1), ws.Cells(i, 2)).Interior.ColorIndex = xlNone End Select Next Application.EnableEvents = True End Sub
※尚、背景色は薄い色にしてあります、下記のサイトでも参考に 色は自由に変更されるとよいでしょう。
VBAカラー一覧(組み込み定数、RGB値)|色見本あり https://excel-toshokan.com/vba-color-list/
(あみな) 2022/12/13(火) 16:36:26
シート1のB列の値でシート2の色分けしてるんだから、同じことでしょ?
(ngk) 2022/12/13(火) 17:18:23
しかし。。。こういうことをやりたいけれどエクセルではできますかというだけの質問なんですけどねぇ〜。。。
(chata) 2022/12/22(木) 14:31:23
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.