- ベストアンサー
Excelマクロで難しい法則でセルを塗りつぶしたいのですが
# Office系ソフトの方で質問したのですが、削除のうえ こちらで再質問させていただきます。 Excelのセルに下記のような規則で着色したいですが かなり複雑でVBAで解決できるのかすら見当つきません。 ブックの各セルには、0か1、いずれかの値が入っています。 例えば下記は、その2文字で構成される地図の一部とお考え下さい。 0は平地、1は川を表すとします。 00000000000010000000 00010000000011000000 00010000000000110000 00001000000000001000 00010000000000000100 00001000S00000001000 00001000000000000100 (1) 上が上流、下が上流(行番号123..列番号ABC...と若い方が上流です) (2) Sから半径Aキロの円を通過する川Rを全て対象とします。 (3) 川Rが(2)の円と上流側で交わる点をPとします。 (4) 川RのPから上流方向にBキロさかのぼった点をQとします。 (5) 川Rの川岸から右岸と左岸にそれぞれCキロの帯を黒に着色したいです。 AはセルのA1、BはセルのB1、CはセルのC1、1マスの距離(km)はD1に、 それぞれ記入されています。 S(想定する円の中心点)には便宜的に地図上にSと記入してあるだけで 本来はセルのE1に「H18」のように番地で記入されています。 これらは全て可変で自由に設定可能のようにしたいのですが・・・ ともかく(2)のような考え方だけでも可能なのかな・・と、先日も 当掲示板で質問させていただいたところ、大変ありがたいことに 次のようなロジックをご教示いただきました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1832463 ↑の質問にもかきましたように、多少の誤差は大丈夫なのですが、 (というか、近似的でないと解決不能なこと位は見当つきます(^^;) 実現することは可能でしょうか?よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
あの… パッと見て無理だと思いますよ。 問題は 川 です。 せめて, 川 が数式(関数)で表せるような形状なら可能かもしれませんが, 川 が数式で表せない以上 Excel では無理です。 何を最終目的にされているのかわかりませんが, そういうのって普通,ヂミチに線(川)をトレースして,そこからスタートするものです。 例えば, 「普通の地図」の上に, 「両岸を全て塗った地図」を重ねて, その上の地図に円のマスクかけてその部分だけ透過するとかそういう方法です。 なぜに Excel をそもそも選ばれたのかが意味不明ですが, 普通は Flash や Illustrator など画像ソフトでするものだと思います。 あえて,Excel でするのなら, セルを川のデータに従ってあらかじめ塗っておいて, そのそのセルの上に全く重なるようにオートシェイプで川の両岸を全て塗った地図をかさねて置いて, Sからの半径が変わることによって,オートシェイプをその部分だけ透明にするとか, そんな方法しかないでしょう。 少なくともとりあえずはプロットデータが必要です。 引用されている http://oshiete1.goo.ne.jp/kotaeru.php3?q=1832463 と, 私が#1で答えている http://oshiete1.goo.ne.jp/kotaeru.php3?q=1851231 を 足してさらに複雑化した感じでしょうか。 しかしこれでも,円と上流側で交わる点をPが限度で, 点Qなんか川が蛇行していると決してわかりません。 ヂミチにというか,普通の方がされるように, 画像ソフトを使って,大半は人間が操作し,ごく一部機械にさせるのが一般的な方法だと思います。
その他の回答 (1)
- teiou68k
- ベストアンサー率28% (202/721)
ベクトルデータを扱っていた者です。 質問の件ですが、ベクトルデータとラスターデータを区別した方がよいかと思います。 本件ならば地図を構成する各セルを繋いだラインを保持する必要があります。例えばB2-B3、B3-C4、C4-D4、D4-E5・・・ってな感じ。 現在の持ち方だと川はポイントの集まりであり、これでは単なるラスターデータです。ラスターデータだと交点を求めるのも不可能です。 また上流という概念が分からないでしょう。先ほどの例で言うと、C4とD4のどちらが上流側か判断つきませんよね?人間的にはC4なんでしょうが。 で、ラインを保持すれば一応言われていることは不可能ではないです。ただねぇ・・・。めちゃ大変ですよ( ̄ー ̄) それだけでも1人月は軽く行きそうな予感が(^^;)
お礼
teiou68kさん、アドバイスありがとうございました。 ご教示の内容は、よくわかる気がいたします。 わたしも、交点を求めるのは不可能なのでは? という疑問は薄々感じていました。 やっぱり一筋縄ではいかないのですね。 取り急ぎ、御礼申し上げます
お礼
sassakunさん、貴重な貴重なアドバイス、本当にありがとうございます。 すみません、質問の簡単化のため、目的を随分端折ってしまいましたが 次のスレッドのようなシミュレーションをExcelで行いたい次第です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1666509 ↑の延長線上で新たに (1) 川という概念が加わり、 (2) 塗りつぶす条件も川の沿岸に絞り込むようにしたくなったところ、 本質問に至った次第です。 こういう処理は、本来地理情報システム(GIS)などの仕事なのですが、 地図自体がシンプルで、かつGISソフトが数十万と超高価という事情も あり、何とかExcelで済ませられならないかと思いました。 ちなみに、 0001 2222 0000 3333 みたいなデジタル地図(?)は既に用意してあり、 別に河川情報が必要になったので、河川を含む地図画像を川だけ残した 透過GIFにして、↑のデジタル地図の上に重ね合わせたりはしてある 状態です。 ともあれ、sassakunさんご指摘のように、 > しかしこれでも,円と上流側で交わる点をPが限度で, > 点Qなんか川が蛇行していると決してわかりません。 というのが実情でしょうね・・