|
皆さんのご親切により、徐々にではありますがVBAの流れがつかめてきました。
協力いただいている皆さん、本当に本当にありがとうございます。
Yukiさんが書いてくださったコードについて幾つか質問があります。
Yukiさんが書いてくださったコード部分は「」で記します。
ぜひ、ご教授ください。
(1)
jのFor文が終わった後の
「Next」
は、jが抜けているだけでしょうか。それとも省略できるものなのでしょうか。
(2)
「' A列の最大行取得
eR = .Range("A" & .Rows.Count).End(xlUp).Row」
という命令は、値が連続して入っている範囲を知るものなのでしょうか。
また、行列の数が一緒ではない可能性もあるので、行に対しても同様の処理を行ないたいと考えています。
この場合、命令は
' 1行の最大行取得
eR = .Range("1" & .Rows.Count).End(xlUp).Row
で良いのでしょうか。
(3)
dt1 dt2は最初値が何も入っていないのに、
「If dt1 < .Cells(i, j).Value Then」 や
「If dt2 < .Cells(j, i).Value Then」
という比較が出来るということは、変数は最初に何らかの値に初期化されるという認識でよろしいのでしょうか。
(4)
「' 行列が同じ番号だったら ===== を代入
If i = j Then .Cells(i, j).Value = "'====="」
という部分ですが、行、列共に並べ替えられる可能性があるため、同じ名前が同じ番号に来るわけではないのです。
そこで自分が考えているのは、
まずA2とB1、A2とC1・・・と比較していき、一致する名前があれば、対象セルに'=====を代入
というのをA3、A4・・・eRと繰り返していけば、実現できるのではないかと思います。
このようなことが実現できる命令はありますでしょうか。
(5)
「対象のシートモジュールに」
という部分ですが、ここがよく分かりません。
もう一度例を挙げさせていただきます。
一郎 三郎 二郎 四郎
四郎
二郎
一郎
三郎
とあり、
一郎 三郎 二郎 四郎
四郎
二郎
一郎 8/1
三郎
などと入力されたときに、その反対側に---を入力する、つまり
一郎 三郎 二郎 四郎
四郎
二郎 ---
一郎 8/1
三郎
としたいということなのです。これを実現するプログラムになっているのでしょうか。
自分が考えているのは、これを実現するには、
入力されたセルの行が”一郎”,列が”二郎”であることを知り、
行が”二郎”、列が”一郎”であるセルに---を入力
という手順なのかなと思っているのですが、このような処理は可能でしょうか。
分からないことだらけで、本当に申し訳ありません。
見当外れのことを質問していましたら、どうぞご了承ください。
また、説明が分かりにくい部分があれば、再度質問させていただきたいと思っています。
よろしくお願い致します。
|
|