#excel #excel-formula #excel-2016
#excel #excel-формула #excel-2016
Вопрос:
Вероятно, это не такая уж сложная проблема, но я, похоже, не мог ее решить.
Существует диапазон Excel, например:
Теперь цель состоит в том, чтобы использовать формулу =(Значение ячейки / 2) * 50 для каждой ячейки в диапазоне. Результат выглядит следующим образом:
Конечно, это можно сделать строка за строкой или столбец за столбцом. Но есть ли какой-нибудь более простой способ сделать это, учитывая, что может быть больше предметов и даже большое количество учащихся?
Вот мой код, и я использую excel 2016:
int lastRow = wsht.Cells.Find("*", Type.Missing,Type.Missing, Type.Missing, XlSearchOrder.xlByRows, XlSearchDirection.xlPrevious, false, Type.Missing, Type.Missing).Row;
int lastCol = wsht.Cells.Find("*", Type.Missing, Type.Missing, Type.Missing, XlSearchOrder.xlByColumns, XlSearchDirection.xlPrevious, false, Type.Missing, Type.Missing).Column;
int i=2;
for(i=2;i<=lastCol;i )
{
string colName = getColumnName(i);
wsht.Cells[2, (lastCol 1)].Formula = "=(" colName "2/2)*50";
wsht.Cells[2, (lastCol 1)].AutoFill(wsht.Range[wsht.Cells[2, (lastCol 1)], wsht.Cells[lastRow, (lastCol 1)]], XlAutoFillType.xlFillValues);
wsht.Range[wsht.Cells[2, (lastCol 1)], wsht.Cells[lastRow, (lastCol 1)]].Copy();
wsht.Range[wsht.Cells[2, i], wsht.Cells[lastRow, i]].PasteSpecial(XlPasteType.xlPasteValues, XlPasteSpecialOperation.xlPasteSpecialOperationNone, Type.Missing, Type.Missing);
}
При большем количестве строк и столбцов приведенный выше код займет время. Специальными параметрами для вставки являются сложение, вычитание, умножение и деление. Как применить немного более сложную формулу в этом случае?
Любая помощь приветствуется!!
Комментарии:
1. Почему вы делите на 2, а затем умножаете на 50? Имеет смысл просто умножить на 25.
2. Это только для примера, который не является простым сложением или вычитанием. Это может быть любая математическая формула. Ну, я не мог придумать ничего лучшего!
3. а) Выберите область того же размера, что и ваш источник, например
F2:H6
; б) введите формулу=(B2:D6/2)*50
и в) нажмите Control Shift Enter, чтобы подтвердить формулу массива.
Ответ №1:
Вы можете сделать это с помощью формулы. Попробуйте приведенную ниже формулу.
=(INDEX($B$2:$D$6,ROW($A1),COLUMN(A$1))/2)*50
Если вы хотите сделать это с помощью VBA
кодов, попробуйте ниже-
Sub Multiply50()
Dim sh As Worksheet
Dim lRow As Long, lCol As Long
Dim rng As Range
Set sh = ThisWorkbook.Worksheets("Sheet1")
lRow = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row
lCol = sh.Cells(1, sh.Columns.Count).End(xlToLeft).Column
For Each rng In sh.Range("B2:" amp; Cells(lRow, lCol).Address)
rng = (rng / 2) * 50
Next
Set sh = Nothing
End Sub