2010-09-17 2 views
1

Итак, сегодня получена таблица Excel с более чем 20 000 ячеек. Мне пришлось отделять их по имени (когда 14 строк запускают новый клиент) и суммируют столбцы цен. Итак, я написал:Использование функции Excel в вопросе VB

Sub NewSpace() 
' 
' NewSpace Macro 
' 
' Keyboard Shortcut: Ctrl+p 
' 
     'create the count variable, initilize it to 17 
     Dim count As Integer 
     count = 17 

    While count <= 30003 

      'add first row 
      Rows(count & ":" & count).Select 
      Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

      'add second row 
      Rows(count & ":" & count).Select 
      Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

      'Select cell A in the first created row, write "Total", and format properly 
      Range("A" & count).Select 
      ActiveCell.FormulaR1C1 = "Total" 
      With ActiveCell.Characters(Start:=1, Length:=5).Font 
        .Name = "Calibri" 
        .FontStyle = "Bold" 
        .Size = 11 
        .Strikethrough = False 
        .Superscript = False 
        .Subscript = False 
        .OutlineFont = False 
        .Shadow = False 
        .Underline = xlUnderlineStyleNone 
        .ThemeColor = xlThemeColorLight1 
        .TintAndShade = 0 
        .ThemeFont = xlThemeFontMinor 
      End With 

      'Select cell H in the first created row, sum up the values 
      Range("H" & count).Select 
      ActiveCell.FormulaR1C1 = "=sum(H" & (count - 15) & ":H" & (count - 1) & ")" 
      With ActiveCell.Characters(Start:=1, Length:=5).Font 
        .Name = "Calibri" 
        .FontStyle = "Bold" 
        .Size = 11 
        .Strikethrough = False 
        .Superscript = False 
        .Subscript = False 
        .OutlineFont = False 
        .Shadow = False 
        .Underline = xlUnderlineStyleNone 
        .ThemeColor = xlThemeColorLight1 
        .TintAndShade = 0 
        .ThemeFont = xlThemeFontMinor 
      End With 


    'increment the counter by 16, start again 
    count = count + 16 

    Wend 
End Sub 

Однако я получаю ошибку #name на этой линии: ActiveCell.FormulaR1C1 = "= сумма (H" & (количество - 15) & ": Н" & (количество - 1) & ")"

Все, что мне кажется хорошо, и, честно говоря, я не уверен, что мне нужно изменить.

EDIT: Я также забыл упомянуть, в сообщении об ошибке #name, формула показывает правильно, однако он добавляет 'к функции, например, так: = СУММ (' H __ ':' H__ ')

ответ

3

Try ActiveCell.Formula вместо ActiveCell.FormulaR1C1 ...

.FormulaR1C1 для другого стиля адресации ячеек

ActiveCell.Formula = "=A1" 

и

ActiveCell.FormulaR1C1 = "=R1C1" 

относится к одной и той же ячейке.

+0

Это работало точно так, как должно быть. Спасибо за помощь Барта. – AgainstClint