マンガでよめる痔のこと・薬のこと

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

101
110
101
と2次元配列化するプログラムについて教えて下さい。
また、もしよろしかったら
    1
  311
11■ ■
 2■■ 
11■ ■
と表されるプログラムについても教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0

 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
    • good
    • 0

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
「エクセルマクロでプログラミングを勉強して」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング