質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

1509閲覧

挟まれた数字を変換するマクロ

churi_yuzuki

総合スコア32

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2016/11/15 08:11

イメージ説明
上図の様なエクセルで、1に挟まれた0を1に変換するマクロを作成したいと思っています。

ですが、全く見当がつかないので何か助言をいただければ。。。と思います。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

himakuma

2016/11/15 08:14

もう少し具体的な例を記載していただけませんか?1に変換する前、後の状態が知りたいです。
himakuma

2016/11/15 08:15

多分オセロ的な感じですか?
lain

2016/11/15 08:16

挟まれるというのは列、行のどちらなのでしょう?
torisan

2016/11/16 00:29 編集

0が1に変わって、また新たに1と1に挟まれた0ができると思うのですが、それについての処理はどうすれば良いのでしょうか?また処理が1回のみで、処理する方向が複数(縦と横 等)の場合、処理する順番によって結果が変わってしまう事がありますが、それについてもお答えください。
churi_yuzuki

2016/11/17 03:09

曖昧で申し訳ありませんでした。挟まれる、というのは行方向で、新たに出来た1に関しては想定しておりませんでした。。
guest

回答2

0

塗りつぶしの条件が曖昧でしたが、サンプルで掲載いただいたシート内容からオセロ的なものではなく、横方向の範囲塗りつぶしと推測して回答させていただきます。
(掲載いただいたサンプルシートを参考に、各行に1は2回出現し、その範囲を塗りつぶすものとしています。)


処理の流れは以下のようになると思います。

①対象行をループ処理する。 (行ループ開始)2行目~4行目 ②各行のB列からI列の範囲で最初の1を探す。 ③見つけた1のセルの右隣のセルからI列の範囲で1を探す。 ④見つけた始点~終点の間のセルを1に書き換える (列ループ開始)始点列~終点列 該当行・列のセルの値を1にする (列ループ終了) (行ループ終了)

今回はご自身で作成されたコードの掲載がありませんでしたので、回答でもコード記載は控えさせていただきました。
処理手順のアドバイスのみさせていただきましたので、これを参考にコードを起こしてみてください。

その過程でまたわからないことなどが出てきたら、作成コードとともに追記していただければより具体的なアドバイスができると思います。

※前提条件にかなり推測が含まれていますので、見当違いなアドバイスとなっていたらすみません。

投稿2016/11/17 01:55

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

churi_yuzuki

2016/11/17 03:11

アドバイスありがとうございます! ロジックは理解できたので無事記述できそうです。 やってみます。
guest

0

ベストアンサー

単純に自分の周辺8方向を調べればわかるとは思います(さして速度を気にしないなら)
アルゴリズムだけまとめた擬似言語だと下記のような感じでしょうか。後は頑張ってVBAのコードで書いてみてください。

if (自分==0) { if ( (左上==1 and 右下==1) or (上==1 and 下==1) or (右上==1 and 左下==1) or (右==1 and 左==1) ) { // 1に挟まれているので1に書き換える } } // 後はこれを全マスに対して行うfor文を書く

投稿2016/11/15 08:21

編集2016/11/15 08:28
ishi9

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

churi_yuzuki

2016/11/17 03:10

なるほど、、そういう走査方法もあるのですね、やってみます、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問