2015-05-26 4 views
0

Привет, Пожалуйста, помогите мне в этой ошибке.Ошибка несоответствия типа 13 Excel VBA

i = 0 
Dim ci As Integer 
pi = Array(0.5, 0.7, 0.8, 0.9) 

ci = 1 
For i = 0 To UBound(Criteria) 
    Windows("Demo.xlsx").Activate 
    Worksheets("Raw_Data").Activate 
    LastRow = Cells(Rows.count, "A").End(xlUp).Row 
    ActiveSheet.Range("A1:H" & LastRow).AutoFilter field:=TaskType, Criteria1:=Criteria(i) 
    ActiveSheet.Range("A1:H" & LastRow).AutoFilter field:=Status, Criteria1:="=Completed" 
    Columns(Elapse).Select 
    Selection.Copy 
    Windows(fname).Activate 
    Sheets("Calculation").Select 

     For J = 1 To UBound(Criteria) 
      Columns(ci).Select 
      ActiveSheet.Paste 
      For ri = 2 To 5 

      MsgBox "=ROUND(PERCENTILE(A:A," & pi(ri - 2) & "),2)" 
      Range(Columns(ci + 1) & ri).Value = "=ROUND(PERCENTILE(A:A," & pi(ri - 2) & "),2)" 
      Next ri 
      Range(Columns(ci + 1) & (ri)).Value = "=ROUND(AVERAGE(A:A),2)" 
      Range(Columns(ci + 1) & (ri + 1)).Value = "=ROUND(MAX(A:A),2)" 
     Next J 
     ci = ci + 2 

Next i 

Я geeting Ошибка в этой строке диапазона (Столбцы (CI + 1) & п) .Value. Я пытался отлаживать, но не получил никакого решения.

+0

Когда вы получаете сообщение об ошибке, какие значения в CI и ри? – 99moorem

+0

Значение ci = 1, ri = 2 – Unicorn

+0

диапазон ожидает буквы, а не числа для столбца (для использования столбца вам нужно будет что-то использовать для получения буквы столбцов()), попробуйте использовать ячейки (ri, ci + 1). Значение – 99moorem

ответ

0

Я не уверен, если вы можете использовать Columns как Range в таком виде:

Range(Columns(ci + 1) & ri).Value = "=ROUND(MAX(A:A),2)

Вы можете использовать что-то вроде этого:

Columns(ci + 1 + ri).Value = "=ROUND(MAX(A:A),2)"

Но заполнить все колонки с формулой не очень хорошая идея, лучше использовать диапазон немного по-другому:

Range(Cells(1, ri), Cells(LastRow, ri)).Value = "=ROUND(MAX(A:A),2)"

Возможно, последний пример будет полезен

Смежные вопросы