
У меня есть двумерный массив данных, который мне нужно обнулить. То есть, я должен вычесть вектор-столбец, который я вычислил, из каждого столбца в матрице.
Говоря математическим языком, если мы определим «вектор идентичности», где каждый элемент равен 1, мне нужно сделать:
Мне удалось сжать матрицу с 500 тыс. строк, увеличив ее на несколько сотен столбцов, до 160 тыс. строк, увеличив ее менее чем на сотню, но она довольно большая, и перетаскивание ручек, похоже, приводит к сбою Excel.
решение1
Простое вычитание ячеек по ячейкам с заблокированным вектором столбца дельта "$" будет работать для наборов данных обычного размера, например:
=B2 - $I2
Однако, похоже, ваша проблема больше связана с размером данных и сбоем Excel во время простого вычисления вычитания. Возможно, требуемый объем памяти просто превышает то, что доступно вашему компьютеру. Вот несколько предложений, которые можно попробовать:
1. Вычислить с другого листа/рабочей книги, с вычислениями вручную
Что если вы поместите свою таблицу обнуления на новый лист/рабочую книгу и переведете вычисления в режим ручного выполнения? Подготовьте формулы на новом листе:
=Лист1!B2 - $I2
Скопируйте и вставьте, затем нажмите «Рассчитать».
2. Попробуйте использовать формулу массива, так как Excel будет выполнять вычисления в большом объеме.
В качестве альтернативы вы можете попробовать использовать формулу массива для столбца =(B2:B1000 - $I2:$I1000) и CTRL+SHFT+ENTER при выборе всего выходного столбца L2:L1000. Не уверен, что это действительно ускорит процесс, но попробовать стоит.
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-разрядный компьютер с 64-разрядной версией Excel.
Вы можете проверить, какой тип Windows (32 или 64 бит) вы используете, нажав «кнопку Windows» + «Пауза / Прервать». Проверьте здесь, чтобы узнать, какой тип вы используете из офиса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.
/грустное лицо/