Excel の 2 次元データ配列の各列から 1 列を減算する

Excel の 2 次元データ配列の各列から 1 列を減算する

ゼロに戻す必要のある 2D 配列のデータがあります。つまり、計算した列ベクトルを行列の各列から減算する必要があります。

ここに画像の説明を入力してください

数学的に言えば、各要素が 1 である「単位ベクトル」を定義する場合、次の操作を行う必要があります。

ここに画像の説明を入力してください

マトリックスを 50 万行数百列から 16 万行 100 列未満に縮小できましたが、サイズがかなり大きく、ハンドルをドラッグすると Excel がクラッシュするようです。

答え1

デルタ列ベクトル「$」ロックによる単純なセルごとの減算は、通常サイズのデータ​​セットで機能します。例:

=B2 - $I2

しかし、問題はデータのサイズと、単純な減算計算中に Excel がクラッシュすることと関係しているようです。必要なメモリの量が、コンピューターで使用できる量を超えているだけかもしれません。試してみることをおすすめします。

1. 他のシート/ワークブックから計算し、手動で計算する

ゼロ設定テーブルを新しいシート/ワークブックに配置し、計算を手動で行う場合はどうでしょうか? 新しいシートに数式を準備します。

=シート1!B2 - $I2

コピーして貼り付けてから、「計算」を押します。

2. Excelは一括計算を行うので、配列数式を試してください。

あるいは、列ごとに配列数式 =(B2:B1000 - $I2:$I1000) を使用し、出力列 L2:L1000 全体を選択しながら CTRL+SHFT+ENTER を押すこともできます。実際に速度が上がるかどうかはわかりませんが、試してみる価値はあります。

3. ファイルを Excel バイナリ ファイル (*.xlsb) として保存します。

ファイルをバイナリ形式で保存すると、メモリ要件が軽減されるか、少なくともファイルの保存時や自動バックアップ時の処理負荷が軽減される可能性があります。こちらを参照してください。https://www.spreadsheet1.com/how-to-save-as-binary-excel-workbook.html

4. クラウドベースまたは代替のスプレッドシートを使用してみる

Office Online または Google Sheets でデータを処理してみませんか。または、Open Office Calc をインストールしてみませんか?

5. 64ビット版のExcelを搭載した64ビットコンピューターを使用する

「Windows ボタン」+「一時停止/中断」を押すと、実行している Windows の種類 (32 ビットまたは 64 ビット) を確認できます。Office から実行している種類を確認するには、こちらを確認してください。https://www.howtogeek.com/288001/how-to-find-out-which-version-of-microsoft-office-youre-using/

6. 元に戻すスタックの深さを0に設定する

元に戻すスタックの深さを 0 に設定することで、元に戻す機能を一時的にオフにすることができます。https://support.microsoft.com/en-us/help/211922/how-to-modify-the-number-of-undo-levels-in-excel

7. ファイルを信頼する

また、ファイルの場所を信頼済みゾーンとして信頼センターに追加してみてください。こちらを参照してください。https://support.microsoft.com/en-us/office/add-remove-or-change-a-trusted-location-7ee1cdc2-483e-4cbb-bcb3-4e7c67147fb4

8. Excelを使わない

最後の手段として、Matlab または Octave や SciLab などのオープンな代替手段を使用してデータを処理します。

/悲しい顔/

関連情報