« パリ ポンピドゥーセンター キュビスム展—美の革命 ピカソ、ブラックからドローネー、シャガールへ@京都市京セラ美術館を観てきた。なかなか面白かった。何をどう見てもタイトルと結びつかない絵も。100点を超える作品数で、写真撮影も大部分がOKでした。 | トップページ | HumaneのAIピンの内部構造がFCCで公開されていた。QualcommのSnapdragon 720GにX15 LTEモデム、SkyworksのFEM、QualcommのSAWなどがなんとなくわかる。 »

2024年4月10日 (水)

Excel VBAからOfficeスクリプト(TypeScript)へ乗換るための数値計算(3) セル範囲を2次元配列、1次元配列に入れるところでハマる…as number[][]で数値型に直したり、[].concat(...a)で2次元から1次元に直したり、a.map((x) => [x])で1次元から2次元に直すなどした。

さて今回は、行列計算をしようとしてハマったところを。

・セルの範囲をRangeオブジェクトから getValues()で値をとると2次元配列になる。

 ただ、型が(number | string | boolean)なので、数値の2次元配列変数に入れようとすると×。

 as number[][]で型アサーションが必要。

 https://typescriptbook.jp/reference/values-types-variables/type-assertion-as

・セルの範囲は1列(縦ベクトルのような)でも2次元配列になる。なので1次元配列に変換が必要。

 どうもJavaScriptにはあるflatがTypeScriptはないようで、代わりに三点リーダーを使うスプレッド構文と

 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax
 

   連結するconcatを使うと簡単。

 https://qiita.com/manzoku_bukuro/items/c28c6f484315a0ff6ce2

・逆に1次元配列を2次元配列にするにはmapを使うと簡単。

例題はこんな感じ。

Officescript_array

 

コードもつけておきます。

// セルの範囲を2次元配列、1次元配列に入れる例

 

function main(workbook: ExcelScript.Workbook) {
    let sheet = workbook.getActiveWorksheet();
    //2次元配列を行列から得る場合
    // Rangeオブジェクトの値は2次元配列だが、変数にいれるにはas numbers[][]で型アサーションが必要
    let a: number[][] = sheet.getRange("A1:C3").getValues() as number[][];
    // 1次元配列を縦ベクトルから得る場合
    //1列しかなくても2次元配列になるので縦ベクトルは1次元にconcatで直す。
    let b : number[] = [].concat(...sheet.getRange("E1:E3").getValues() as number[][]);
    //2次元配列をセルに表示する場合はそのままでOK。
    sheet.getRange("A5:C7").setValues(a);
    //1次元配列を縦ベクトルのように表示するときは2次元配列にmapで直す。
    sheet.getRange("E5:E7").setValues(b.map((x) => [x]));
}

 

次はやっと本題の行列計算(LU分解かな)。

(過去のもの)

Excel VBAからOfficeスクリプト(TypeScript)へ乗換るための数値計算(2) 4段4次のルンゲクッタ法でローレンツ方程式を計算してみる。

Excelの自動化がいつの間にかVBAじゃなくてデスクトップ版でもOfficeスクリプト(TypeScript)で出来るようになっていた。Python in Excelとか触っているうちに出遅れた…そこで先日作った複素数クラスを使ってセルに入力した値を複素数計算できるようにした。

« パリ ポンピドゥーセンター キュビスム展—美の革命 ピカソ、ブラックからドローネー、シャガールへ@京都市京セラ美術館を観てきた。なかなか面白かった。何をどう見てもタイトルと結びつかない絵も。100点を超える作品数で、写真撮影も大部分がOKでした。 | トップページ | HumaneのAIピンの内部構造がFCCで公開されていた。QualcommのSnapdragon 720GにX15 LTEモデム、SkyworksのFEM、QualcommのSAWなどがなんとなくわかる。 »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« パリ ポンピドゥーセンター キュビスム展—美の革命 ピカソ、ブラックからドローネー、シャガールへ@京都市京セラ美術館を観てきた。なかなか面白かった。何をどう見てもタイトルと結びつかない絵も。100点を超える作品数で、写真撮影も大部分がOKでした。 | トップページ | HumaneのAIピンの内部構造がFCCで公開されていた。QualcommのSnapdragon 720GにX15 LTEモデム、SkyworksのFEM、QualcommのSAWなどがなんとなくわかる。 »

最近の記事

最近のコメント

2024年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
フォト
無料ブログはココログ