VBA роблять до циклу, змінюючи діапазон формул


-1

Я намагаюся запустити цикл через всі файли в папці, з цими файлами я хочу запустити формулу, яка заповнить 20x2 клітинки (наприклад, N1: O20), і я хочу зберегти знайдені значення і додати наступні значення до нижня частина попередньої ітерації.

Ось мій код, з яким я працюю, A1: K36004, де файли .dat відображають їхню інформацію.

У той час як Len (strFile) & gt; 0 'Тут додавання clearcontents видаляє значення формули на наступній ітерації

With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1"))
     .TextFileParseType = xlDelimited
     .TextFileCommaDelimiter = True
     .Refresh
End With
'End Extraction
' Filter_Minute Macro

Мені потрібні ці значення для збереження в місці, а наступна ітерація - до наступного порожнього рядка

Range("N5").Select
Range("N5").Formula = "=INDEX($A$5:$A$36004,(ROW(N5)-5)*1200+1,1)"
    Selection.AutoFill Destination:=Range("N5:N34"), Type:=xlFillDefault
    Range("N5:N34").Select
    Range("N5:N34").Select
Range("O5").Select
Range("O5").Formula = "=MAX(INDEX($J$3:$J$36004,(ROW(H3)-3)*1200+1,1):INDEX($J$3:$J$36004,(ROW(H4)-3)*1200,1))"
    Selection.AutoFill Destination:=Range("O5:O34"), Type:=xlFillDefault
    Range("O5:O34").Select
    Range("O5:O34").Select

strFile = Dir

Петля

https://i.stack.imgur.com/uo3Wa.png

Це зображення показує, що відбувається на наступних ітераціях, коли весь попередній підрахунок змінюється.

Дякую за ваш час.

Відповіді:


0

Я не повністю дотримуюся того, що ви просите (немає ніяких сумнівів), але в простому випадку механічного відстеження фіксованого діапазону призначення (N1: O20):

  • x - перший рядок у діапазоні (1)
  • кількість рядків (numRows) є константою (20)
  • діапазон призначення у формулах VBA - це рядкове значення (theRange) виду "Nx: Ox + numRows-1"
  • перше значення x призначається до початку циклу
  • для кожної ітерації: theRange = "N" & amp; str (x) & amp; ": O" & amp; str (x + numRows-1); {посилання на діапазон як range.(theRange) без лапок}; x = x + numRows; кінець циклу

Перший раз через: theRange = "N1: O20". Другий раз: theRange = "N21: O40"

Використовуйте імена змінних.

Отже, в основному, ви стежите за "кінцевими точками кадру" інформації, яку цікавите, а потім змістіть кадр. Якщо ваш кадр має змінну величину, вам знадобиться набагато більше логіки, щоб визначити, як вказати кінцеві точки. У вашому прикладному тексті початковий рядок буде дорівнює 1, на вашому малюнку стартовий рядок буде 5.

Використовуйте подібну схему для будь-яких інших діапазонів змін, які потрібні в одному циклі.


Добре спасибі, там було не питання заявлене але ви на що я blabbing приблизно. Я спробую це зробити.
Workinatwork
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.