目次
経緯
Excel関数の「match関数」と「index関数」を使って値を得ていたが、それらの関数だと、「重複している値はセルの上にあるほうが優先されて読む」のでどうにかセルの下にあるほうを読めないか模索していた。しかし、調べていくと、なかなか難しいらしい。
結果、
「セルの上にあるほうが優先される」なら、
「セルの上にどんどん行を追加しちゃえ」という結論になり、VBAでやってみました。
「Rows().insert」を使う
「ExcelのSheet1に値がある」という設定です。
まず、Visual Basicを開きます。
次に、Microsoft Excel Objextsのフォルダの中のSheet1をダブルクリック。
そこにプログラムを↓のように書きます。
Sub Worksheet_Change(ByVal Target As Excel.Range) If Range("A2") = "" Then Exit Sub else Rows(2).Inset End If End Sub
プログラムの説明をします。空白の行はカウントしてません。
1行目、おまじないです。そのまま書いてください。
2行目、If文です。セルA2が空白だったら、3行目に飛びます。
空白じゃなかったら、、4行目に飛びます。
3行目、空白なのでプログラム終わりです。
4行目、else行が始まります。
5行目、ここで行を挿入しています。(2)は上から2行目という意味です。
6行目、If文終わりです。
7行目、プログラム終わりです。
こんな感じでうまくいきました。
セルA2に文字を入れると、行が追加されると思います。
参考になれば、幸いです。
ここまで読んでいただきありがとうございました。