Форум Рідного Міста

VBA for Excel

Юрій Марків - 29-5-2009 у 12:27

Хто би мені допоміг?

Є файл .xls, у якому потрібно опрацювати дві колонки, F та J.
Вигляд приблизно такий:

F J
aaa bbb
(порожньо) ccc
(порожньо) ddd
(порожньо) (порожньо)
fff ggg
(порожньо) rrr
(порожньо) vvv
(порожньо) (порожньо)

Так от, мені потрібно, пройтися по списку і вибирати з колонки J все так, як є, а з колонки F брати лише перше непорожнє значення і проставляти нажче в тій самій колонці F навпроти існуючих непорожніх значень з колонки J. Коли доходимо до рядка, де обидва значення порожні, потрібно брати наступне непорожнє значення з колонки F і ставити в тій самій колонці F навпроти існуючого значення з колонки J. І так далі, 23 тис. рядків.

Допоможіть плз.

Aндpiй - 29-5-2009 у 17:23

Допоможу, але після понеділка-абсолютно нема часу. Взагалі в exel-i то можна зробити дуже просто: вмикаємо запис макроса -> виконуємо приблизно такі дії , як має робити програма-> завершуємо запис макроса і йдемо у створений програмний модуль підправляти що треба, всякі змінні замість чисел та ін.

Сергій Зіньків - 29-5-2009 у 20:54

Привіт!!! Мені потрібна невеличка допомога у VBA. Написав програмку
Dim r As Integer, n As Integer, i As Integer
r = Range(Range("f3"), Range("f3").End(xlDown)).Rows.Count
n = InputBox(" Ведіть бажану суму ")
For i = 3 To r
If Cells(i, 6) < n Then
Cells(i, 8) = Cells(i, 1)
Cells(i, 9) = Cells(i, 5)
Cells(i, 10) = Cells(i, 6)
End If
Next i
вона працює виводить потрібні мені дані у 8,9 і 10 стовпець, але виводить дані у відповідні рядки де виконується умова, а треба шоб виводило одне за одним починаючи з першого рядка. Дивився сам шось не можу згадати шо тре зробити, допоможіть. Дякую.

Юрій Марків - 31-5-2009 у 08:44

Цитата:
Оригінальне повідомлення від Юрій Марків
Хто би мені допоміг?

Є файл .xls, у якому потрібно опрацювати дві колонки, F та J.

...



Андрію, дякую за турботу, та рішення вже знайдено: :)

Цитата:

Sub CopyExtendColumnsFandJ()
Dim X As Long
Dim Frow As Long
Dim LastDataRow As Long
Const DataStartRow As Long = 2
Const Source As String = "Sheet2"
Const Destination As String = "Sheet3"
With Worksheets(Source)
LastDataRow = .Cells(.Rows.Count, "J").End(xlUp).Row
Frow = DataStartRow
For X = DataStartRow To LastDataRow
If .Cells(X, "J").Value <> "" Then
If .Cells(X, "F").Value = "" Then
Worksheets(Destination).Cells(X, "F").Value = .Cells(Frow,
"F").Value
Else
Frow = X
Worksheets(Destination).Cells(X, "F").Value = .Cells(X, "F").Value
End If
Worksheets(Destination).Cells(X, "J").Value = .Cells(X, "J").Value
Else
Frow = X
End If
Next
End With
End Sub