派遣先会社で使っているのを見かけたINDIRECT関数。あまり見かけない関数だし、僕も実務で使ったことはほとんどないと思う。

しかし、月ごとの金額の累積額を毎月更新したい場合などに使える、経理に携わる者は、マスターしておきたい関数だと思った。

 

使用例:

=INDIRECT(B6, TRUE)

セルB6に入力されている参照文字列で表されているセル参照を返す。

 

=SUM(E3:INDIRECT(B6))

セルB6セルが月ごとに変動するように設定しておけば、その月の累積額を計算することができる。

 

なぜ使えないかと考えると、どのような関数なのかが言語化できないからだと思う。ようするに直接的な参照ではなく、まさにIndirect、間接的に参照する関数だ。そのため、INDIRECT関数の引数が変わると、参照先が変わることになる。表示したいセルは変えずに、参照先を変動させる場合などに使えそうだ。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以下のシートの1行目を残して、A2からD21までのデータを消すときは、

Range("A1").CurrentRegion.Offset(1,0). ClearContents

と書く。

 

CurrentRegionはCtrl + Aの操作と同じなので、もしデータの入力されていない行があった場合、全体が選択できない。そんなときに便利なのが、UsedRangeプロパティである。

 

ActiveSheet.UsedRange.offset(1,0).clearcontents

 

これで下のようなデータでもすべて削除できる。なおRange("A1")はエラーになるので、ActiveSheetと記述すること。

 

 

今日はFormat関数を学んだ。Excel VBAできる大辞典はコード解説が付いていてとても親切だ。

 

 

 

1.Sub 表示書式変換()
2.    Dim myData As Single
3.    myData = 29800
4.    MsgBox "元の表示書式:" & myData & vbCrLf & _
             "変換後の表示書式:" & Format(myData, "Currency")
5.    myData = 43426
6.    MsgBox "元の表示書式:" & myData & vbCrLf & _
             "変換後の表示書式:" & Format(myData, "ggge\年m\月d\日")
7. End Sub

 

コード解説

1.表示書式変換とうマクロを記述する。

2.単精度浮動小数点数型の変数myDataを宣言

3.変数myDataに29800を格納

4. "元の表示書式:"という文字列と変myData, "変換後の表示書式:"という文字列と、変数myDataを通貨の表示に変換した文字列を改行文字で改行してメッセージボックスで表示をする。(vbCrLfが改行コード)

5. 変数myDataに43426を格納

6."元の表示書式:" という文字列と変myData, "変換後の表示書式:"という文字列と、変数myDataを[平成〇年〇月〇日」という表示に変換した文字列を改行文字で改行してメッセージボックスで表示をする。(vbCrLfが改行コード)

7.マクロの記述を終了する。

 

シリアル値とは

Excelでは、シリアル値という小数点を含む数値で日付を管理している。シリアル値の整数部分が日付を表し「1900/1/1」を1として、1日ごとに1ずつ加算されている。小数点部分が時刻を表し。0:00:00を基点に、24時間で1になるように加算されている。