Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


18614 / 76732 ←次へ | 前へ→

【63558】VBAでMedian関数を用いて各行列の中央値を得る
質問   E-MAIL  - 09/11/17(火) 20:06 -

引用なし
パスワード
   今,A1から順に320×256の整数がエクセルファイルで保存されています.
上記の行列にmedian関数を使用して3×3の中央値を求め,それを中央のセルの値と中央値を置き換えます.
この処理を320×256の行列に適用して(一列目と一行目は除く),画像処理にあるメディアンフィルタをかけます.
私はVBAを全く扱ったことがないのですが,上記のプログラムを教えてもらうことができました.(今,教えてもらった方はいません)
これを機会に自分で勉強して内容を理解し,Median関数の適用範囲(今なら3x3)を変更したり出来るようになろうと思っていました.
しかし,急に上記の適用範囲を変更せざるおえなくなり,早急に下記のプログラムを理解する必要が出てきてしまいました.
一応,関数や使われているモノの意味を調べ考えてみたのですが適用範囲をどこで変えているのかわかりません。
自業自得ではあると思いますが,下記のプログラムでMedian関数の適用範囲(今なら3x3)を4x4といった風にどこで変更するのか教えていただけませんか?
どなたかよろしくお願いします。

Option Explicit
Sub MidFlt()
Dim x As Long, y As Long
Dim mx As Long, my As Long
Dim a As Variant, s As String
Dim r As Range
Set r = Range("A1:M256") ''入力範囲
Worksheets.Add
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
my = r.Rows.Count ''行数
mx = r.Columns.Count ''列数
ReDim a(1 To my, 1 To mx)
For y = 1 To my ''各行
For x = 1 To mx ''各列
s = "=MEDIAN(" & r.Worksheet.Name & "!"
s = s & IIf(y = 1, "R", "R[-1]")
s = s & IIf(x = 1, "C", "C[-1]")
s = s & ":"
s = s & IIf(y = my, "R", "R[1]")
s = s & IIf(x = mx, "C", "C[1]")
s = s & ")"
a(y, x) = s
Next x
Next y
Cells(r.Row, r.Column).Resize(my, mx).FormulaR1C1 = a
Set r = Nothing
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

0 hits

【63558】VBAでMedian関数を用いて各行列の中央値を得る 09/11/17(火) 20:06 質問
【63622】Re:VBAでMedian関数を用いて各行列の中央値... 通行人 09/11/21(土) 23:56 回答
【63627】Re:VBAでMedian関数を用いて各行列の中央値... 09/11/22(日) 15:22 お礼
【63626】Re:VBAでMedian関数を用いて各行列の中央値... Usa 09/11/22(日) 14:04 発言
【63628】Re:VBAでMedian関数を用いて各行列の中央値... 09/11/22(日) 15:24 お礼

18614 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free