У меня есть электронная таблица следующим образом:
Столбцы A: G (имя, путь, размер, тип, DateCreated, DateLastModified, DateLast Accessed)
Заголовок использует строки 1: 7
- Столбец C содержит размер файла в КБ
- Первичный VBA заполняется из выбранной папки
- Подставка вставляет 2 столбца слева от ColumnD
- Теперь столбцы: Имя, Путь, Размер в КБ, Размер в МБ, Размер в ГБ, Тип, DateCreated, DateLastModified, DateLast Accessed
У меня есть Sub чтобы вызвать цикл Column C и вставить разделенное количество в ColumnD & ColumnE
Цикл работает, но занимает время, поэтому хотел бы PasteSpecial, где ColumnD = ColumnC / 1000000 и ColumnE = ColumnC / 1000000000
В каждой папке будет разное количество файлов. Для запуска конверсионного вызова я использую myRows = Cells(Rows.Count, 3).End(xlUp).Row - 7
(где 7 - вычет строки заголовка) "
Я бы хотел PasteSpecial myRows Column C в ColumnD и ColumnE, но, как было отмечено, myRows будет быть разным для каждой папки. Я не нахожу (но все еще ищу), куда поместить делитель, который будет использоваться для вычисления ColumnD и ColumnE:
PasteSpecial Operation:=xlPastSpecialOperationDivide
Мой код вызова:
Sub Convert_MB_GB()
Dim myRows As Long
Dim x As Long
Dim var As Double
Dim Num1 As Long
Dim Num2 As Long
Num1 = 1000000 'Divisor for KB to MB
Num2 = 1000000000 'Divisor for KB to GB
myRows = Cells(Rows.Count, 3).End(xlUp).Row - 7 'Count rows and subtract 7-row header
Range("D:E").Insert 'Insert 2 columns to the left of Column D
[D7].Value = "Size in MB" 'Add title to column
[E7].Value = "Size in GB" 'Add title to column
Range("C8").Select 'Starting Cell
For x = 1 To myRows
var = Application.ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = var / Num1
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = var / Num2
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(0, -2).Select
Next
Range("D:D").NumberFormat = "0.0" 'Configure Column D to 1 decimal point
Range("E:E").NumberFormat = "0.0" 'Configure Column E to 1 decimal point
End Sub