MW211 EXIT

devlog
プログラムのインストール
2018年03月28日
【インストールレベル】
  (a) 実行ファイルを置くだけ(設定ファイルも近くに置く)
  (b) パス(環境変数PATH)を書き換える
  (c) レジストリを書き換える(コンテキストメニューの追加など)
【インストール先】
  標準的なインストール先は以下の通り
  ┌───────────┬────────────────────────┐
  │C:\Program Files      │64bitプログラムの標準インストール先             │
  │                      │・セキュリティ厳しい                            │
  ├───────────┼────────────────────────┤
  │C:\Program Files (x86)│32bitプログラムの標準インストール先             │
  │                      │・セキュリティ厳しい                            │
  └───────────┴────────────────────────┘
  任意のインストール先は以下の通り
  ┌───────────┬────────────────────────┐
  │D:\Program Files      │64bitプログラムのOSドライブ以外のインストール先 │
  │                      │・OSドライブの容量を消費したくない場合          │
  ├───────────┼────────────────────────┤
  │D:\Program Files (x86)│32bitプログラムのOSドライブ以外のインストール先 │
  │                      │・OSドライブの容量を消費したくない場合          │
  ├───────────┼────────────────────────┤
  │C:\(プログラム名)     │独自のプログラム配置先                          │
  │                      │・セキュリティを気にしたくない場合              │
  ├───────────┼────────────────────────┤
  │C:\apps               │ちょっとしたプログラムの配置先                  │
  │C:\tools          など│                                                │
  └───────────┴────────────────────────┘
  ちなみにアンインストール時にインストール先のフォルダが
  まるごと削除される場合があるので、
  異なるプログラム同士でのフォルダの共用は避けた方がよい
分類:Windows
ExcelVBA/範囲の値コピー最速
2018年03月24日
配列を介するのがよいようだ。
配列は二次元配列となるが、Variant型配列にすれば手軽に使える。

「入力」シートの左上3×3を、「出力」シートの左上3×3に値コピーする処理は
以下のような感じになる
┌──────────────────────────────────────┐
│Dim 配列 As Variant                                                         │
│With ThisWorkbook.Worksheets("入力")                                        │
│    配列 = Range(.Cells(1, 1), .Cells(3, 3)).Value                          │
│End With                                                                    │
│With ThisWorkbook.Worksheets("出力")                                        │
│    Range(.Cells(1, 1), .Cells(3, 3)) = 配列                                │
│End With                                                                    │
└──────────────────────────────────────┘

配列を介さず直接値コピーすることも可能。
┌──────────────────────────────────────┐
│Range(.Cells(4, 4), .Cells(6, 6)) = Range(.Cells(1, 1), .Cells(3, 3)).Value │
└──────────────────────────────────────┘
この方式では、異なるシート間でもコピーは可能だが
記述が煩雑となるので、異なるシート間の場合は、
配列を介した方がわかりやすいであろう
┌──────────────────────────────────────┐
│Range(出力シート.Cells(4, 4), 出力シート.Cells(6, 6)) _                     │
│= Range(入力シート.Cells(1, 1), 入力シート.Cells(3, 3)).Value               │
└──────────────────────────────────────┘
なお、配列に代入する際には「.Value」を省略できるが
範囲から範囲へ代入する場合には省略すると
値がコピーされない(何も起きない)ので注意。
分類:ExcelVBA
PowerBI/複合キーの結合
2018年03月19日
たぶん、VLOOKUP関数が複合キーに対応していないように
PowerBIのリレーションシップも複合キーに対応していないようだ。

ひとまず、VLOOKUP関数で複合キーに対応する方法に則って対処すると
各キーを文字列結合した新たな列を設けて、それを主キーとして扱うという形になる。
→「(C2)=A2&" "B2」からの「=VLOOKUP(C2,…」

では、これをPowerBIでどうやって実現するか。

まず、データを取得等で、テーブルを呼び出しておく。
その後、「クエリを編集」を実行する。

「クエリエディター」が起動するので、「列の追加」タブより
当該テーブルを選択の上、「カスタム列」を押下する。

そこで「新しい列名」に「複合キー」とか任意の列名を入力し、
「カスタム列の式」に以下のような感じで入力する。
┌──────────────────────────────────────┐
│= Number.ToText([キー1])&" "&Number.ToText([キー2])                         │
└──────────────────────────────────────┘
→「Number.ToText()」は数値文字列変換の関数

後は、「リレーションシップ」画面にて、その列(「複合キー」とか)を
単一主キーの場合と同様に、ドラッグ&ドロップしたりして紐づければOK。
分類:PowerBI
MSSQL/ストアド関数と動的可変テーブル
2018年03月02日
ストアド関数で戻り値を可変のテーブル型とし、
関数内で動的にSQL文を生成した結果を戻り値として返すことはできるのか?

・ストアド関数で戻り値を可変のテーブル型とする場合には、
  処理を書くことができず(つまり動的にSQL文を書けない)、
  RETURN処理に固定のSELECT文を書けるのみ
  RETURN処理では、ストアドプロシージャを呼び出すこともできない

よって、無理のようだ
分類:MSSQL
前へ 1 次へ