![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
![]()
Здравствуйте, помогите пожалуйста разобраться с этой расчудесной табличкой, она является аналогом большой таблицы с которой мне приходится работать.
Сжав волю в кулак и напрягая единственную извилину, я произвёл на свет следующее: Public Sub Pereskok() Dim stolbec As Integer Dim Cell As Range Dim stroki As Integer stolbec = 0 a = 0 For stroki = 125 To 144 Cells(stroki, 1).Select If Cells(stroki, 1) = "y" Then For Each Cell In Range(Cells(stroki, 3), Cells(stroki, 13)) Cell.Select If Cell.Value = "" And Cell.Offset(1, 0).Value <> "" Then Do stolbec = stolbec - 1 If Cell.Offset(0, stolbec).Value <> "" Then Cell.Value = Cell.Offset(0, stolbec).Value a = a + 1 End If Loop Until a = 1 a = 0 stolbec = 0 End If Next Cell End If Next stroki End Sub а затем ещё и вот это: Public Sub u() b = 0 For stroki = 120 To 142 Cells(stroki, 2).Select If Cells(stroki, 2) = "" And Cells(stroki, 1) = "y" Then Do b = b - 1 Cells(stroki + b, 1).Select If Cells(stroki + b, 1) = "y" And Cells(stroki + b, 2) <> "" Then Cells(stroki + b, 13).Select Cells(stroki, 2).Select Cells(stroki, 2).Value = Cells(stroki + b, 13).Value a = a + 1 End If Loop Until a = 1 a = 0 b = 0 End If Next stroki End Sub Я, как вам очевидно, далёк от программирования и поэтому был бы благодарен если кто-нибудь предложил минимальные изменения в код или намекнул, что нужно исправить, или каким словом воспользоваться, чтобы привести эту расчудесную табличку в желаемый вид. Заранее благодарен! |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 29.10.2008
Сообщений: 294
|
![]()
Да! Я долго вдумчиво пялился в Ваши расчудесные таблички, но честно говоря, так и не понял логики построения таблички "Желаемый вид"
![]() Может как-то по-подробнее! |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
![]()
Постараюсь! В строках, которые начинаются с Y необходимо заполнить пустые ячейки цифрами из предидущих ячеек, но только в том случае, если под пустой ячейкой имеется ячейка с цифрой. В случае когда первая ячейка в строке пустая её нужно заполнить последним значением из преыдущей строки начинающейся с Y.
Последний раз редактировалось 1134; 27.01.2010 в 13:58. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 29.10.2008
Сообщений: 294
|
![]() Код:
Последний раз редактировалось Maxx; 27.01.2010 в 15:12. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
![]()
Благодарю!
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
![]()
Я подумал над вашим предложением и теперь мой макрос выглядит примерно так, и вроде всё ничего, но никак не могу раскрыть тайну загадочной красной строчки, на которой всё спотыкаетя:
Sub ZAPOLNYALKA() Application.ScreenUpdating = False Application.Calculation = xlManual Dim H As Integer Dim Cell As Range Dim stroki As Integer Dim qqq As Integer Dim sutki As Integer Dim PosledniyList As Integer PosledniyList = Worksheets.Count a = 0 For qqq = 1 To PosledniyList Sheets(qqq).Select For stroki = 1 To 200 Select Case Cells(stroki, 1).Value Case "ßíâàðü" sutki = 36 Case "Ôåâðàëü" sutki = 33 Case "Ìàðò" sutki = 36 Case "Àïðåëü" sutki = 35 Case "Ìàé" sutki = 36 Case "Èþíü" sutki = 35 Case "Èþëü" sutki = 36 Case "Àâãóñò" sutki = 36 Case "Ñåíòÿáðü" sutki = 35 Case "Îêòÿáðü" sutki = 36 Case "Íîÿáðü" sutki = 35 Case "Äåêàáðü" sytki = 36 End Select If Cells(stroki, 4) = "Qæ,ì3/ñóò" Then H = 0 Do H = H + 1 If Cell(stroki + H, 4).Value = "Íä, ì" Then a = a + 1 End If Loop Until a = 1 a = 0 Cells(stroki, 1).Select For j = 6 To sutki ' ïåðåáîð ñòîëáöîâ If Cells(stroki, j) = "" And Cells(stroki + H, j) = "" Then Cells(stroki, j) = "" If Cells(stroki, j) <> 0 And Cells(stroki + H, j) <> 0 Then lastFiiledValue = Cells(stroki, j) If Cells(stroki, j) = "" And Cells(stroki + H, j) <> 0 Then Cells(stroki, j) = lastFiiledValue Next j Else: stroki = stroki End If Next stroki Next qqq 'Application.ScreenUpdating = True 'Application.Calculation = xlAutomatic End Sub Буду признателен за помощь! |
![]() |
![]() |
![]() |
#7 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Замените If Cell(stroki + H, 4).Value =
на If Cells(stroki + H, 4).Value = |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
![]()
Большое спасибо, буду внимательней!
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
авт. перенос данных из нескольких столбцов одной таблицы в один столбец другой таблицы | A_ALL | Microsoft Office Access | 7 | 24.08.2009 21:13 |
Данные из двух полей исх. таблицы в одно поле сводной таблицы | Strelec79 | Microsoft Office Excel | 2 | 02.08.2009 13:59 |
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD | prikolist | Microsoft Office Word | 6 | 21.11.2008 13:17 |
убрать вложенные таблицы из таблицы в режиме просмотра 2007 | Baxxter | Microsoft Office Access | 2 | 17.11.2008 21:28 |
Редактирование таблицы | Rio309 | БД в Delphi | 6 | 16.11.2008 12:28 |