F#

Cellの情報を取得

概要 Cells(3,3)のセル情報を1列目のセルに1〜100番まで出力する。構文 [<ExcelFunctionAttribute("セル情報")>] let GetCellInfo () = let cell = new ExcelReference(0,2) let gci i = XlCall.Excel(XlCall.xlfGetCell, i, cell) let sv row value = let cell = new ExcelReference(row, 0) cel</excelfunctionattribute("セル情報")>…

Problem 31

Problem 31 module Problem_0031 (* イギリスでは硬貨はポンド£とペンスpがあり, 一般的に流通している硬貨は以下の8種類である. 1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p). 以下の方法で£2を作ることが可能である. 1×£1 + 1×50p + 2×20p + 1×5…

Worksheetを選択する

概要 指定した名前のワークシートをアクティブにする。構文 [<ExcelFunctionAttribute("Sheetの選択")>] let SelectWorksheet () = let args = "[ExcelDnaSamples.xlsx]Sheet1" let ret = XlCall.Excel(XlCall.xlcWorkbookSelect, args) LogDisplay.WriteLine(sprintf "%A" ret) LogDisplay.Show() (</excelfunctionattribute("sheetの選択")>…

Workbookを選択する

概要 指定した名前のワークブックをアクティブにする。構文 [<ExcelFunctionAttribute("Workbookの選択")>] let ActiveWorkbook () = let args = "[ExcelDnaSamples.xlsx]Sheet1" let ret = XlCall.Excel(XlCall.xlcWorkbookActivate, args) LogDisplay.WriteLine(sprintf "%A" ret) LogDisplay.Show() </excelfunctionattribute("workbookの選択")>…

ファイル名を指定して保存

概要 指定した Filename で保存する。 指定しない場合は上書き保存となる。構文 [<ExcelFunctionAttribute("名前を付けて保存")>] let WorkbookSaveAs () = let filename = @"C:\ExcelDna-0.29\test\SaveAsTest.xlsx" let args : obj [] = [| filename |] let ret = XlCall.Excel(XlCall.xlcSaveAs, args)</excelfunctionattribute("名前を付けて保存")>…

Excelファイルの上書き保存

概要 現在アクティブなWorkbookを上書き保存する。構文 [<ExcelFunctionAttribute("ファイルの上書き")>] let WorkbookSave () = let ret = XlCall.Excel(XlCall.xlcSave, Array.empty) Debug.WriteLine(ret.ToString()) () パラメータ 引数なし戻り値 コマンド実行に成功した場合は true を返す。それ以</excelfunctionattribute("ファイルの上書き")>…

Excelファイルを開く

概要 指定 Filename のExcelを開く。 他パラメータは未調査構文 [<ExcelFunctionAttribute("指定パスのExcelを開く")>] let WorkbookOpen () = let filename = @"C:\ExcelDna-0.29\test\OpenTest.xlsx" let args : obj [] = [| filename |] let ret = XlCall.Excel(XlCall.xlcOpen, args) Debug.WriteLine(ret.</excelfunctionattribute("指定パスのexcelを開く")>…

コマンド一覧

index command 001 xlcBeep 002 xlcOpen 003 xlcOpenLinks 004 xlcCloseAll 005 xlcSave 006 xlcSaveAs 007 xlcFileDelete 008 xlcPageSetup 009 xlcPrint 010 xlcPrinterSetup 011 xlcQuit 012 xlcNewWindow 013 xlcArrangeAll 014 xlcWindowSize 015 xlcWi…

Beep音

構文 let ret = XlCall.Excel(XlCall.xlcBeep, Array.empty) Debug.WriteLine(ret.ToString()) パラメータ パラメータなし戻り値 Beep音の発生に成功した場合は true を返す。それ以外の場合は false を返す。

Excel DNAのデバッグ環境作り

F5実行で即デバッグ実行出来る事を目的としたメモ書きです。 VisualStudioのGUIエディタに自分が作成したコントロールのデバッグを行いたい場合は、VS.exeをターゲットとしたデバッグと同じやり方です。 ■実行環境 Microsoft Visual Studio 2010 Pro Microso…

開いているWorkbookすべての、Workbookステータスをシートに出力する

概要 開いているWorkbookすべての1~100までのステータスをアクティブシートに出力する。構文 [<ExcelFunctionAttribute("Workbookのステータスすべてを取得して、アクティブシートに出力する。")>] let Workbooks () = let ret = XlCall.Excel(XlCall.xlfWindows, Array.empty) let arr = ret :?> obj [,] let list = [ for i in 0..(arr.GetLength(1)-1) -> </excelfunctionattribute("workbookのステータスすべてを取得して、アクティブシートに出力する。")>…

Excel内部関数一覧

index 関数名 001 xlfCount 002 xlfIsna 003 xlfIserror 004 xlfSum 005 xlfAverage 006 xlfMin 007 xlfMax 008 xlfRow 009 xlfColumn 010 xlfNa 011 xlfNpv 012 xlfStdev 013 xlfDollar 014 xlfFixed 015 xlfSin 016 xlfCos 017 xlfTan 018 xlfAtan 019 xlf…

Windowsの取得

概要 開いているWindow一覧を取得して出力する。構文 open ExcelDna.Logging [<ExcelFunctionAttribute("Excelウィンドウ一覧")>] let Windows () = let ret = XlCall.Excel(XlCall.xlfWindows, Array.empty) let arr = ret :?> obj [,] let arr = [ for i in 0..(arr.GetLength(1)-1) -> arr.[0,i] :?> stri</excelfunctionattribute("excelウィンドウ一覧")>…

Problem 30

Problem 30 module Problem_0030 (* 驚くべきことに, 各桁を4乗した和が元の数と一致する数は3つしかない. 1634 = 14 + 64 + 34 + 44 8208 = 84 + 24 + 04 + 84 9474 = 94 + 44 + 74 + 44 ただし, 1=14は含まないものとする. この数たちの和は 1634 + 8208 +…

Problem 29

Problem 29 module Problem_0029 (* 2 &#8804; a &#8804; 5 と 2 &#8804; b &#8804; 5について, abを全て考えてみよう: 22=4, 23=8, 24=16, 25=32 32=9, 33=27, 34=81, 35=243 42=16, 43=64, 44=256, 45=1024 52=25, 53=125, 54=625, 55=3125 これらを小さい…

Problem 28

Problem 28数式の書き方としてあってるかどうか分かりませんが・・・・ 解き方としてはこんな感じかな?? 範囲は1001x1001なので ではなくとなるみたい。 つまり 右上の数字は奇数値に対して+2ずつした数の二乗した数になるので、それを逆算をして2で割るこ…

Excelの列幅を調整するプログラムを作れないか試す。

実験用コードも含めて、うまくいかず撃沈 XlCall.Excelこいつの使い方が良く分からないので、ちょっとどうしようもない状況かも ソースコードを見るとデリゲートになっていて、どのタイミングでセットしてるのやらぱっと見不明Tips集みたいなものを作らない…

あるフォルダ配下の "CREATE TABLE", "CREATE PROCEDURE", "ALTER PROCEDURE" の1行を取得する。

F#

F#を訓練したおかげで、結構ぱっとかけるようになりました。 ■コード open System.IO let list path = let checkArr = [|"CREATE TABLE"; "CREATE PROCEDURE"; "ALTER PROCEDURE";|] let check (t : string) = let t = t.ToUpper() checkArr |> Array.exists…

Problem 27

Problem 27■ 総当たりの場合 module Problem_0027 (* オイラーは以下の二次式を考案している: n2 + n + 41. この式は, nを0から39までの連続する整数としたときに40個の素数を生成する. しかし, n = 40のとき402 + 40 + 41 = 40(40 + 1) + 41となり41で割り…

Problem 26

Problem 26 module Problem_0026 (* 単位分数とは分子が1の分数である。 分母が2から10の単位分数を10進数で表記すると次のようになる。 1/2 = 0.5 1/3 = 0.(3) 1/4 = 0.25 1/5 = 0.2 1/6 = 0.1(6) 1/7 = 0.(142857) 1/8 = 0.125 1/9 = 0.(1) 1/10 = 0.1 0.1…

Problem 24

Problem 24■書き直したコード module Problem_0024 (* 【問題】 順列とはモノの順番付きの並びのことである. たとえば, 3124は数1, 2, 3, 4の一つの順列である. すべての順列を数の大小でまたは辞書式に並べたものを辞書順と呼ぶ. 0と1と2の順列を辞書順に並…

Problem 25

Problem 25 module Problem_0025 (* フィボナッチ数列は以下の漸化式で定義される: Fn = Fn-1 + Fn-2, ただし F1 = 1, F2 = 1. 最初の12項は以下である. F1 = 1 F2 = 1 F3 = 2 F4 = 3 F5 = 5 F6 = 8 F7 = 13 F8 = 21 F9 = 34 F10 = 55 F11 = 89 F12 = 144 12…

Problem 23

Problem 23 module Problem_0023 (* 完全数とは, その数の真の約数の和がそれ自身と一致する数のことである. たとえば, 28の真の約数の和は, 1 + 2 + 4 + 7 + 14 = 28であるので, 28は完全数である. 真の約数の和がその数よりも少ないものを不足数といい, 真…

Problem 22

Problem 22 module Problem_0022 (* 【問題】 5000個以上の名前が書かれている46Kのテキストファイルnames.txtを 用いる. まずアルファベット順にソートせよ. のち,各名前についてアルファベットに値を割り振り, リスト中の出現順の数と掛け合わせることで,…

Problem 20

Problem 20 module Problem_0020 (* 【問題】 n × (n - 1) × ... × 3 × 2 × 1 を n! と表す。 100! の各桁の数字の合計を求めよ。 *) // 通常パターン // 648 // 59 ms let calc = let fac n = seq { 2I..n } |> Seq.reduce (*) fac 100I |> (string) |> (fu…

Problem 19

Problem 19■.NETライブラリを使ったパターン module Problem_0019 (* 【問題】 次の情報が与えられている。 1900年1月1日は月曜日である。 9月、4月、6月、11月は30日まであり、2月を除く他の月は31日まである。 2月は28日まであるが、うるう年のときは29日…

Problem 21

Problem 21 module Problem_0021 (* 【問題】 d(n)をnの真の約数の和と定義する。 (真の約数とはn以外の約数のことである。) もし、d(a) = b かつ d(b) = a(a ≠ b)を満たすとき、 aとbは友愛数(親和数)であるという。 例えば、220の約数は1,2,4,5,10,1…

Problem 18

Problem 18 module Problem_0018 (* 【問題】 以下の三角形の頂点から下まで移動するとき、 その数値の合計の最大値は23になる。 3 7 4 [10; 7] 2 4 6 [12;14;13] 8 5 9 3 [20;(19);(23);16;] この例では 3 + 7 + 4 + 9 = 23 以下の三角形を頂点から下まで移…

Problem 17

Problem 17 module Problem_0017 (* 【問題】 1 から 5 までの数字を英単語で書けば one, two, three, four, five であり、 全部で 3 + 3 + 5 + 4 + 4 = 19 の文字が使われている。 では 1 から 1000 (one thousand) までの数字をすべて英単語で書けば、 全…

Problem 16

Problem 16 module Problem_0016 (* 【問題】 2^15 = 32768 であり、これの各数字の合計は 3 + 2 + 7 + 6 + 8 = 26 となる。 同様にして、2^1000 の各数字の合計を求めよ。 A. 1366 55 ms *) open System let run() = let ret = 2I<<<999 |> string seq { fo…