ライブラリ

2017年06月

Diff

Diff のアルゴリズム (Myers) ※もちろんVBAで実装

差分を計算するというのは次の3つを計算すること
LD (LevenshteinDistance)=編集距離   :2つの要素列の違いを数値化したもの
LCS(Longest Common Subsequence) :2つの要素列の最長共通部分列
SES(Shortest Edit Script)                  :ある要素列を別の要素列に変換するための最短手順

DIFF   2017/06/19   shono

fRange_Value, fRange_Formula, fRange_Text

************************************************************************
セルの値を配列で返します
※「fRange_Value」は .Value、
   「fRange_Formula」は .Formula、
   「fRange_Text」は .Text 
 の結果を返します。

【引数】SliceDirection:xlRow or xlColumn を指定すると、
                                  1行 or 1列 のデータを1次元配列で返します。

【重要】配列の要素番号は、行・列番号に合わせて返します。
            そして、行・列をEnumで定義することで、非常に開発しやすくなります。
    ※シート上のセルも、配列の値も、同じ Enum で処理できるのがいいんです!

    Enumで定義する事で、行or列の削除・追加・入替があっても、
          基本的には対象となるEnumのメンバーを削除・追加・入替すればOKなので、
            メンテナンスが超簡単になります!
            ※直接 [Range("A1")] や [Cells(1,2)] 等と書くのはメンテ大変です。。。

            下記のEnumの例で、データ開始行・終了行等を定義しているのは、
            For文等に使う為です(データの開始から終了まで処理する等)
            ※開始、終了の概念でコーディングできるので、可読性UP+メンテUP

    とにかく、1度使えばやみつきになるハズ!!
            ※配列に格納した後で、1行だけ抜き出したいって時には、
               fArray_Slice って関数が便利なので、ライブラリを参照ください~

【例】Enumの個人的な設定例を参考までに掲載しておきます
Enum E_Row_Menu
    Data_S=2                                'データ開始行
        Data1 = E_Row_Menu.Data_S
        Data2
        Data3
    Data_E = E_Row_Menu.Data3   'データ終了行
End Enum
Enum E_Col_Menu
    Data_S=3                                'データ開始列
        フォルダパス = E_Col_Menu.Data_S
        ファイル名
        拡張子
    Data_E = E_Col_Menu.拡張子    'データ終了列
End Enum
************************************************************************

Range   2017/06/19   shono