• 締切済み

Excel、で染められたセル背景の値の抜き出し

Excelで ボタンを押します。 (1)、そうすると、ポインターで合わせたセルにダブルクリック(指でポポンッと)を押すとそのセルの背景色は水色に代わる、というモードに切り替わります。 もう一度そのボタンを押すとそのモードが終了し普通に戻ります。(水色の背景色は使用者の消すという意図が働かない限りそのままにします。) (2)、セルC2に行番号を指定します。(1)とは違うボタンを押すと 指定された行番号の、空白を含めた(D:W)の値の内、(1)でセル背景色が水色に変わったセルの値だけがセルF2から右に向かって、隙間なく詰められ、抜き出される形にしたいです。 できますかね? よろしくお願いいたします。

みんなの回答

  • kkkkkm
  • ベストアンサー率66% (1733/2603)
回答No.9

> 指でポポンとして、不可視化で塗りつぶされたセルを青く塗りつぶす 条件付き書式はセルの値もしくは計算の結果で書式を決めるはずですから、ダブルクリックでどこかのセルの値を変更してその値に従って青く塗りつぶすという条件して最後に適用すれば可能だと思います。 以前はすべてのセルが対象でしたので、ボタンプッシュで書き替えるセルは1個で良かったですが、セル一個一個に対応するセルを利用できるようにする必要があります。 また、この場合この回答のいままでのコードをかなり変更しないといけなくなります。

961awaawa
質問者

お礼

>また、この場合この回答のいままでのコードをかなり変更しないといけなくなります。 変更するとどうなりますか?

  • kkkkkm
  • ベストアンサー率66% (1733/2603)
回答No.8

そういう条件付き書式を作成してやればできますが、 ↓ そういう条件付き書式を作成できればできますが(条件次第)

961awaawa
質問者

お礼

まだまだExcelには若輩者の身なんで理解が足りてません。

961awaawa
質問者

補足

指でポポンとして、不可視化で塗りつぶされたセルを青く塗りつぶすか、青く変えるタイプの条件付き書式ってことですか?

  • kkkkkm
  • ベストアンサー率66% (1733/2603)
回答No.7

> 条件付き書式で不可視化された物は条件付き書式で青く塗りつぶせる そういう条件付き書式を作成してやればできますが、 条件によって書式をかえるのはVBAでやらなくても条件付き書式でできるというのは、そういう意味ではありません。A2に=A1*3でA1の3倍のデータをA2に表示できるのにそれをVBAでやらなくてもいいでしょと同じ意味です。

961awaawa
質問者

お礼

御無沙汰しておりますkkkkkm さん。このコロナ禍、如何お過ごしでしょうか?過去の数々のご解答、大変感謝いたします。 乱数を見てると様々な想像が沸き起こってまた質問したい衝動に駆られ戻ってきました。いつになるかは分からないのですが、また質問しますのでその時に宜しかったらまたお付き合いお願い致します。

  • kkkkkm
  • ベストアンサー率66% (1733/2603)
回答No.6

> VBA じゃなくてもできるんですか? 条件によって書式をかえるのはVBAでやらなくても条件付き書式でできますよね。

961awaawa
質問者

お礼

条件付き書式で不可視化された物は条件付き書式で青く塗りつぶせる、という解釈でよろしいでしょうか?

  • kkkkkm
  • ベストアンサー率66% (1733/2603)
回答No.5

> VBA で作ってたら大丈夫だったってことでしょうかね? VBAでやらなくても解決できることがわかっているのにわざわざVBAでやるのはナンセンスだと思います。 また、VBAで作っていても状況によってはもとのコードをほとんど書き替えなければいけないということも起こりえます。 なんでもそうだと思いますが、後から継ぎ足し継ぎ足しをすればどこかで行き詰まることも往々にしてあるでしょう。 ようは、最初からきちんと計画してやりましょうという話だと思います。

961awaawa
質問者

お礼

>VBAでやらなくても解決できることがわかっているのにわざわざVBAでやるのはナンセンスだと思います。 VBA じゃなくてもできるんですか?

961awaawa
質問者

補足

>ようは、最初からきちんと計画してやりましょうという話だと思います。 本当にそうだと思いました。ご指摘ありがとうございます。

  • kkkkkm
  • ベストアンサー率66% (1733/2603)
回答No.4

> セルの値が不可視化されてる場合にも青く塗りつぶせるようにする 条件付き書式で不可視にしてるなら無理です。

961awaawa
質問者

お礼

やっぱりそういった回答になってきますよね。VBA で作ってたら大丈夫だったってことでしょうかね?条件付き書式に着手するまで にVBA でしてたら融通が効くという流れですよね。

  • kkkkkm
  • ベストアンサー率66% (1733/2603)
回答No.3

> 間違って水色に塗りつぶしたセルに、このモードのまま、再度ポポンとダブルクリックすると元に戻る方法 https://okwave.jp/qa/q9849262.html のNo4で状態を逆転させる方法の回答をしています。同じような質問をしなくて済むようにやり方を覚えてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Application.Intersect(Target, Range("D:W")) Is Nothing Then Exit Sub Else If ToggleButton1 = True Then Cancel = True If Target.DisplayFormat.Interior.Color = 15773696 Then Target.Interior.ColorIndex = xlNone Else Target.Interior.Color = 15773696 End If End If End If End Sub > 指定した行番号の水色背景を一斉に元に戻す方法もお願いしたいです。 これも過去に同じようなパターンで方法を示したと思います。 Range(Cells(Range("C2").Value, "D"), Cells(Range("C2").Value, "W")).Interior.ColorIndex = xlNone

961awaawa
質問者

お礼

パソコン苦手な私にも、パソコンに対する抵抗感を与えず、難なく立ち向かえる状態にしてくださった方々、特にkkkkkmさん、本当に感謝します。

961awaawa
質問者

補足

セルの値が不可視化されてる場合にも青く塗りつぶせるようにするにはどうしたら良いですかね?

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

エクセルで使われる表現を使うほうがよい。 >染められたセル セルの塗りつぶしの色、のことだろう。 >セル背景の値 エクセルを分かってないようだ。エクセルのシートのデータは、セルの値が主で、書式などは「従」だ。 歴史沿革的にも、表計算ソフトのシートでは「値」が第1だ。 ーー こういう質問が多いが(質問者も2度目ではないか?)、エクセル関数では、セルの塗りつぶしの色は、捉えられない。だからそのセルの値もどれを足してよいかわからず、、合計を計算したりできない。 VBAならできる可能性はある。 ーー しかし、 #1の回答のように、自分で、セルの塗りつぶしの色を行った場合は、色パレットの色コードなどをどう設定したか、とか色コードは何を設定したか、判るが、他人が設定したものは、いろんなやり方があるので、そ例外の人には、すぐは判らない。 VBAでも組んで見当を付けて、探り当てれば、出来る・判る、だろうが。 ーー 条件付き書式などで、「数式」で条件を設定した場合なら、SUMIFS関数などの条件にそれを取り入れて、関数で計算できないか考えてみたら。 その条件がどうなっているか認識したことあるか? 例として、一番簡単な例では=A1>10なんて条件のもあり得るだろう。その場合 =SUMIF(A1:A8,">10") で色を付けたセルの値の、合計が出る。

  • kkkkkm
  • ベストアンサー率66% (1733/2603)
回答No.1

(1)のためのボタン、ActiveXコントロールのトグルボタンを作成してください。 該当するシートのシートモジュールに以下を (ダブルクリックしたときに該当セルの編集モードを有効のままにしたい場合Cancel = Trueを外してください) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Application.Intersect(Target, Range("D:W")) Is Nothing Then Exit Sub Else If ToggleButton1 = True Then Cancel = True Target.Interior.Color = 15773696 End If End If End Sub (2)のボタンはどちらでもいいです、ボタンのコードに Sub ボタン_Click() Dim i As Long, mCount As Long For i = Range("D:D").Column To Range("W:W").Column If Cells(Range("C2").Value, i).DisplayFormat.Interior.Color = 15773696 Then Range("F2").Offset(0, mCount).Value = Cells(Range("C2").Value, i) mCount = mCount + 1 End If Next End Sub

961awaawa
質問者

お礼

すみません。質問しそびれてました。 間違って水色に塗りつぶしたセルに、このモードのまま、再度ポポンとダブルクリックすると元に戻る方法と、 指定した行番号の水色背景を一斉に元に戻す方法もお願いしたいです。

関連するQ&A

専門家に質問してみよう