• 締切済み

エクセルマクロでプログラミングを勉強しています。

エクセルマクロでプログラミングを勉強しています。 ■ ■ ■■ ■ ■ を 101 110 101 と2次元配列化するプログラムについて教えて下さい。 また、もしよろしかったら     1   311 11■ ■  2■■  11■ ■ と表されるプログラムについても教えて下さい。

みんなの回答

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

対象範囲の全セルの値を0にする。   0のセルをどこかに作り、そのセルをコピー   形式を選択して貼り付け  値  編集ー置換でパターン色黒色+値0のセルを1に置換   検索する文字列 0  書式 黒色   置換後の文字列 1  書式  なし   全て置換   これで黒色のセルの値は1、黒色で無いセルは0となる。   ここで全てのセルのパターン色を「色なし」にすれば、状態がよく読み取れるが。 ーー その後下記を実行。セルの状態を配列に反映する。ほぼそのまま反映すれば仕舞い。 A1:C4範囲の例 Sub test01() Dim h(100, 100) Set a = Range("a1:c4") r = a.Rows.Count c = a.Columns.Count For k = 0 To r - 1 For l = 0 To c - 1 If a.Cells(k + 1, l + 1) = 1 Then h(k, l) = 1 If a.Cells(k + 1, l + 1) = 0 Then h(k, l) = 0 Next Next '--結果をシートセルで確認 Range("a11:C14") = h '---配列の中身1つづつ順次表示 For k = 0 To r - 1 For l = 0 To c - 1 MsgBox h(k, l) Next Next End Sub

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

 A B C 1 ■  ■ 2 ■ ■ 3 ■  ■ を 101 110 101 Sub Test()   Dim v As Variant, c As Range, i As Long   v = Range("A1:C3").Value   For Each c In Range("A1:C3")     v(c.Row, c.Column) = (c.Interior.Color = vbBlack) * -1   Next   '作成した2次元配列Vを確認   Range("A5").Resize(UBound(v, 1), UBound(v, 2)).Value = v End Sub

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

Public Sub f() Dim r As Range Dim row As Integer, col As Integer Dim d() As Integer Dim x As Integer, y As Integer Set r = Sheet1.Range("b3:d5") row = r.Rows.Count col = r.Columns.Count ReDim d(row - 1, col - 1) For y = 1 To row For x = 1 To col If r.Cells(y, x).Interior.Color = VBA.ColorConstants.vbBlack Then d(y - 1, x - 1) = 1 Else d(y - 1, x - 1) = 0 End If Next Next For y = 0 To row - 1 For x = 0 To col - 1 Debug.Print d(y, x), Next Debug.Print Next End Sub 実行結果 f 1 0 1 1 1 0 1 0 1

関連するQ&A

  • エクセルを勉強中の者です。

    エクセルを勉強中の者です。以前使用していたBASICプログラムには配列という考え方があって、DIM namae(100,10,10)---等宣言して使っていましたが、エクセルにはこのような関数はないのでしょうか。 エクセル自体が2次元配列と考えることもできますが---。よろしくお願いします。

  • エクセルのマクロの組み方について

    研究でデータロガーを使ってデータを測定し、エクセルに記録しています。 1秒ごとにプロットしているのですが、それだとデータ量が大きすぎるので 10秒ごとのデータに変換したいと思っています。 マクロで10秒毎に1つのデータを抜き出すようにマクロを組みたいのですが、 マクロを勉強したことがないのでプログラミングの仕方がわかりません。 どのようなプログラムを組めばいいでしょうか? 例えば以下のようにしたいと思っています。 最初の1行目は項目を記入するのでここは消えないようにしたいです。 time result 0   0 1   1 2   2 3   3 4   4 5   5 6   6 7   7 8   8 9   9 10  10 11  11 ・   ・ ・   ・ ・   ・   ↓ time result 0   0 10   10 20   20 30   30 ・    ・ ・    ・ ・    ・ 回答よろしくお願いします。

  • プログラミング言語について

    宜しくお願いいたします。 エクセルのマクロを勉強したいと思っております。 その後、いろいろとプログラミング言語についても勉強したいのですが マクロを勉強することによって、その他のプログラミング言語の理解も早まりますか?

  • プログラミングとエクセル、どっちを選べばいい?

    CADセンター&ゼネコン関連の職種で限定して考えていただき、プログラミングとエクセル(マクロ、VB)でしたら、どちらが勉強して実用性あると思いますか? また、おじさんがプログラミングを勉強してそれを活かせる市場とは、どのようなものがあるか参考までにお聞かせ願えないでしょうか。 当方、東南アジア圏内の現地採用者として数年を過ごしており、今後もその延長で先行きを考える者です。 よろしくお願いいたします。

  • プログラミング 問題 java

    大学のプログラミングの授業でjavaを勉強しています。 先週課題が出たのですが書き方がわかりません。 4×4の形の二次元配列Aの内容を準備し、同じく4×4の形の二次元配列Bに、下図のように90度回転するようにして移すプログラミングを作るという問題です。 わかる方いたら回答お願いします(>_<)

  • エクセルマクロのプログラムについて

    イラストロジックというゲームのプログラミングをエクセルマクロでしているんですが、絵を読み取って問題を作成するプログラムを作りたいんです。何か参考にできるプログラムもしくはヒントなどわかる方いらしたら教えて下さい。

  • エクセルのマクロを勉強したい

    エクセルのマクロを勉強したいんですが 初歩から学びたいのです。 何か、お勧めの本などありましたら 誰か教えてください。 お願いします。

  • エクセル(マクロ)の勉強

    エクセルのマクロやピポットテーブルの勉強をおさらいしたいのですが教材がございません。 インターネットで参考書みたいなのがあるHP教えて下さい。

  • エクセルのマクロの勉強中です。

    エクセルのマクロの勉強中の初心者です。 あるホ-ムペ-ジで、マクロの自動記録から勉強を始めたのですが、 解説通り マクロ名にデ-タの消去 マクロの保存先に作業中のブック 説明にマクロ記録日 ユ-ザ-名にセルA1のデ-タ-を消去する と入れOKとすると、その名前は正しくありませんと表示されてしまいます。 どこが悪いのでしょうか?

  • プログラミング

    c言語プログラミングについて教えてください。 2次元配列で以下の様に数字の昇順(渦巻き状に)にアクセスするにはどうしたらいいでしょうか? 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9

専門家に質問してみよう