=FORMULATEXT(参照)
参照する数式を文字列として返す機能(数式でない場合、エラーを返す)
この関数の有益な活用方を見出したので記録しておく。
- 作業用のワークフォルダに1日から月末までのフォルダーがあり、それぞれの日付フォルダーには同名のエクセルファイルが格納されている。
- はじめに一日のファイルで指定範囲をコピーし、一つにまとめるファイルにリンク貼り付けする。一つにまとめるファイルにリンク貼り付けした直後は相対参照になっているためvbaで絶対参照に変換する。(下記注書き)
- 一つにまとめるファイルにリンク貼り付けし、絶対参照に変換したのちその範囲をコピーし下の行に貼り付ける。貼り付けたのち日付を次の日付に全変換する。これをすべての日数分繰り返す。
- フォルダーの名前は日付形式になっているためセルの計算式を確認すると日付のデータがリンク式に入っていることがわかる。
- ここでFORMULATEXT関数を活かして、それぞれの行の日付を取得する。これにより日別の各種数値が統計できるようになる。
追記1:今回初めての試みであったが、1日より31日までの雛形を準備しておく。月が変わった場合リンク式の年月の部分のみを一斉置換することにより作業は大幅に簡略化される。
追記2:日付(文字列)を取得する際に、DATEVALUE関数を使う。
書式:DATEVALUE(日付文字列)
(注)モノクロの彩り ←ありがとうございます。
https://tack.life/blog/copy-paste-vba-excel-reference/
Private Sub 相対参照→絶対参照に変換()
With Selection
.Formula = Application.ConvertFormula(Formula:=.Formula, FromReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
End With
End Sub