zegor
Дата: Среда, 13.05.2015, 14:00 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 132
Репутация:
1
±
Замечаний:
0% ±
Excel 2007
Доброго дня, знатокам сего форума. Помогите если сможете убить проблему с некорректной работой второй половины кода листа J-League. Я в упор не вижу решения. Суть. Пункты назначения данных при переносе- два массива, расположенных один под другим. Верхний заполняется как и задуманно, нижний нет. Проблему визуально пометил желтым. [moder]Переназовите тему согласно Правилам форума
Доброго дня, знатокам сего форума. Помогите если сможете убить проблему с некорректной работой второй половины кода листа J-League. Я в упор не вижу решения. Суть. Пункты назначения данных при переносе- два массива, расположенных один под другим. Верхний заполняется как и задуманно, нижний нет. Проблему визуально пометил желтым. [moder]Переназовите тему согласно Правилам форума zegor
Сообщение отредактировал zegor - Среда, 13.05.2015, 16:54
Ответить
Сообщение Доброго дня, знатокам сего форума. Помогите если сможете убить проблему с некорректной работой второй половины кода листа J-League. Я в упор не вижу решения. Суть. Пункты назначения данных при переносе- два массива, расположенных один под другим. Верхний заполняется как и задуманно, нижний нет. Проблему визуально пометил желтым. [moder]Переназовите тему согласно Правилам форума Автор - zegor Дата добавления - 13.05.2015 в 14:00
KSV
Дата: Среда, 13.05.2015, 17:44 |
Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация:
255
±
Замечаний:
0% ±
Excel 2013
Верхний заполняется как и задуманно, нижний нет.
Не понял, "КАК вы задумали", но проблемы нет - макрос отрабатывает в точности по реализованному в нем алгоритму. Проблему визуально пометил желтым.
Желтым вы пометили ячейки, а не проблему, а в чем заключается "проблема", так и осталось непонятно... Вот так нужно, если хотите писать все результаты в одну таблицу:
[vba]
Код
Sub Perenos() Application.ScreenUpdating = False Dim a, i%, iLastCol%, xoz%, gost% a = Range("B2:E10").Value With Worksheets("Шахматка") For i = 1 To 9 If a(i, 2) <> "" And a(i, 3) <> "" Then xoz = 1 + Application.WorksheetFunction.Match(Trim(Range("B" & i + 1)), [A1:A18], 0) gost = Application.WorksheetFunction.Match(Trim(Range("E" & i + 1)), [A1:A18], 0) .Cells(xoz, gost * 2) = a(i, 2) .Cells(xoz, gost * 2 + 1) = a(i, 3) gost = gost + 1 iLastCol = .Cells(xoz, Columns.Count).End(xlToLeft).Column If iLastCol < 40 Then .Cells(xoz, 39) = a(i, 2) .Cells(xoz, 40) = a(i, 3) .Cells(gost, 39) = a(i, 3) .Cells(gost, 40) = a(i, 2) Else .Cells(xoz, iLastCol + 1) = a(i, 2) .Cells(xoz, iLastCol + 2) = a(i, 3) .Cells(gost, iLastCol + 1) = a(i, 3) .Cells(gost, iLastCol + 2) = a(i, 2) End If End If Next i End With Application.ScreenUpdating = True End Sub
[/vba]
Верхний заполняется как и задуманно, нижний нет.
Не понял, "КАК вы задумали", но проблемы нет - макрос отрабатывает в точности по реализованному в нем алгоритму. Проблему визуально пометил желтым.
Желтым вы пометили ячейки, а не проблему, а в чем заключается "проблема", так и осталось непонятно... Вот так нужно, если хотите писать все результаты в одну таблицу:
[vba]
Код
Sub Perenos() Application.ScreenUpdating = False Dim a, i%, iLastCol%, xoz%, gost% a = Range("B2:E10").Value With Worksheets("Шахматка") For i = 1 To 9 If a(i, 2) <> "" And a(i, 3) <> "" Then xoz = 1 + Application.WorksheetFunction.Match(Trim(Range("B" & i + 1)), [A1:A18], 0) gost = Application.WorksheetFunction.Match(Trim(Range("E" & i + 1)), [A1:A18], 0) .Cells(xoz, gost * 2) = a(i, 2) .Cells(xoz, gost * 2 + 1) = a(i, 3) gost = gost + 1 iLastCol = .Cells(xoz, Columns.Count).End(xlToLeft).Column If iLastCol < 40 Then .Cells(xoz, 39) = a(i, 2) .Cells(xoz, 40) = a(i, 3) .Cells(gost, 39) = a(i, 3) .Cells(gost, 40) = a(i, 2) Else .Cells(xoz, iLastCol + 1) = a(i, 2) .Cells(xoz, iLastCol + 2) = a(i, 3) .Cells(gost, iLastCol + 1) = a(i, 3) .Cells(gost, iLastCol + 2) = a(i, 2) End If End If Next i End With Application.ScreenUpdating = True End Sub
[/vba]
KSV
KSV.VBA@gmail.com Яндекс.Деньги: 410011921213333
Сообщение отредактировал KSV - Среда, 13.05.2015, 17:46
Ответить
Сообщение Верхний заполняется как и задуманно, нижний нет.
Не понял, "КАК вы задумали", но проблемы нет - макрос отрабатывает в точности по реализованному в нем алгоритму. Проблему визуально пометил желтым.
Желтым вы пометили ячейки, а не проблему, а в чем заключается "проблема", так и осталось непонятно... Вот так нужно, если хотите писать все результаты в одну таблицу:
[vba]
Код
Sub Perenos() Application.ScreenUpdating = False Dim a, i%, iLastCol%, xoz%, gost% a = Range("B2:E10").Value With Worksheets("Шахматка") For i = 1 To 9 If a(i, 2) <> "" And a(i, 3) <> "" Then xoz = 1 + Application.WorksheetFunction.Match(Trim(Range("B" & i + 1)), [A1:A18], 0) gost = Application.WorksheetFunction.Match(Trim(Range("E" & i + 1)), [A1:A18], 0) .Cells(xoz, gost * 2) = a(i, 2) .Cells(xoz, gost * 2 + 1) = a(i, 3) gost = gost + 1 iLastCol = .Cells(xoz, Columns.Count).End(xlToLeft).Column If iLastCol < 40 Then .Cells(xoz, 39) = a(i, 2) .Cells(xoz, 40) = a(i, 3) .Cells(gost, 39) = a(i, 3) .Cells(gost, 40) = a(i, 2) Else .Cells(xoz, iLastCol + 1) = a(i, 2) .Cells(xoz, iLastCol + 2) = a(i, 3) .Cells(gost, iLastCol + 1) = a(i, 3) .Cells(gost, iLastCol + 2) = a(i, 2) End If End If Next i End With Application.ScreenUpdating = True End Sub
[/vba]
Автор - KSV Дата добавления - 13.05.2015 в 17:44
KSV
Дата: Среда, 13.05.2015, 17:45 |
Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация:
255
±
Замечаний:
0% ±
Excel 2013
А так, если записывать нужно все-таки в две таблицы: (хотя, непонятно для чего нужна вторая таблица...):
[vba]
Код
Sub Perenos() Application.ScreenUpdating = False Dim a, i%, iLastCol%, xoz%, gost% a = Range("B2:E10").Value With Worksheets("Шахматка") For i = 1 To 9 If a(i, 2) <> "" And a(i, 3) <> "" Then xoz = 1 + Application.WorksheetFunction.Match(Trim(Range("B" & i + 1)), [A1:A18], 0) gost = Application.WorksheetFunction.Match(Trim(Range("E" & i + 1)), [A1:A18], 0) .Cells(xoz, gost * 2) = a(i, 2) .Cells(xoz, gost * 2 + 1) = a(i, 3) gost = gost + 1 iLastCol = .Cells(xoz, Columns.Count).End(xlToLeft).Column If iLastCol < 40 Then .Cells(xoz, 39) = a(i, 2) .Cells(xoz, 40) = a(i, 3) Else .Cells(xoz, iLastCol + 1) = a(i, 2) .Cells(xoz, iLastCol + 2) = a(i, 3) End If gost = gost + 19 iLastCol = .Cells(gost, Columns.Count).End(xlToLeft).Column If iLastCol < 40 Then .Cells(gost, 39) = a(i, 3) .Cells(gost, 40) = a(i, 2) Else .Cells(gost, iLastCol + 1) = a(i, 3) .Cells(gost, iLastCol + 2) = a(i, 2) End If End If Next i End With Application.ScreenUpdating = True End Sub
[/vba]
А макрос "Стереть", будет все равно в одну строчку [vba]Код
Sub Стереть() Range("B2:BT38").ClearContents End Sub
[/vba]
А так, если записывать нужно все-таки в две таблицы: (хотя, непонятно для чего нужна вторая таблица...):
[vba]
Код
Sub Perenos() Application.ScreenUpdating = False Dim a, i%, iLastCol%, xoz%, gost% a = Range("B2:E10").Value With Worksheets("Шахматка") For i = 1 To 9 If a(i, 2) <> "" And a(i, 3) <> "" Then xoz = 1 + Application.WorksheetFunction.Match(Trim(Range("B" & i + 1)), [A1:A18], 0) gost = Application.WorksheetFunction.Match(Trim(Range("E" & i + 1)), [A1:A18], 0) .Cells(xoz, gost * 2) = a(i, 2) .Cells(xoz, gost * 2 + 1) = a(i, 3) gost = gost + 1 iLastCol = .Cells(xoz, Columns.Count).End(xlToLeft).Column If iLastCol < 40 Then .Cells(xoz, 39) = a(i, 2) .Cells(xoz, 40) = a(i, 3) Else .Cells(xoz, iLastCol + 1) = a(i, 2) .Cells(xoz, iLastCol + 2) = a(i, 3) End If gost = gost + 19 iLastCol = .Cells(gost, Columns.Count).End(xlToLeft).Column If iLastCol < 40 Then .Cells(gost, 39) = a(i, 3) .Cells(gost, 40) = a(i, 2) Else .Cells(gost, iLastCol + 1) = a(i, 3) .Cells(gost, iLastCol + 2) = a(i, 2) End If End If Next i End With Application.ScreenUpdating = True End Sub
[/vba]
А макрос "Стереть", будет все равно в одну строчку [vba]Код
Sub Стереть() Range("B2:BT38").ClearContents End Sub
[/vba] KSV
KSV.VBA@gmail.com Яндекс.Деньги: 410011921213333
Ответить
Сообщение А так, если записывать нужно все-таки в две таблицы: (хотя, непонятно для чего нужна вторая таблица...):
[vba]
Код
Sub Perenos() Application.ScreenUpdating = False Dim a, i%, iLastCol%, xoz%, gost% a = Range("B2:E10").Value With Worksheets("Шахматка") For i = 1 To 9 If a(i, 2) <> "" And a(i, 3) <> "" Then xoz = 1 + Application.WorksheetFunction.Match(Trim(Range("B" & i + 1)), [A1:A18], 0) gost = Application.WorksheetFunction.Match(Trim(Range("E" & i + 1)), [A1:A18], 0) .Cells(xoz, gost * 2) = a(i, 2) .Cells(xoz, gost * 2 + 1) = a(i, 3) gost = gost + 1 iLastCol = .Cells(xoz, Columns.Count).End(xlToLeft).Column If iLastCol < 40 Then .Cells(xoz, 39) = a(i, 2) .Cells(xoz, 40) = a(i, 3) Else .Cells(xoz, iLastCol + 1) = a(i, 2) .Cells(xoz, iLastCol + 2) = a(i, 3) End If gost = gost + 19 iLastCol = .Cells(gost, Columns.Count).End(xlToLeft).Column If iLastCol < 40 Then .Cells(gost, 39) = a(i, 3) .Cells(gost, 40) = a(i, 2) Else .Cells(gost, iLastCol + 1) = a(i, 3) .Cells(gost, iLastCol + 2) = a(i, 2) End If End If Next i End With Application.ScreenUpdating = True End Sub
[/vba]
А макрос "Стереть", будет все равно в одну строчку [vba]Код
Sub Стереть() Range("B2:BT38").ClearContents End Sub
[/vba] Автор - KSV Дата добавления - 13.05.2015 в 17:45
zegor
Дата: Среда, 13.05.2015, 19:57 |
Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 132
Репутация:
1
±
Замечаний:
0% ±
Excel 2007
Знаете KSV , второй вариант как раз то что нужно. Плюсую в репутацию.
Знаете KSV , второй вариант как раз то что нужно. Плюсую в репутацию. zegor
Сообщение отредактировал zegor - Среда, 13.05.2015, 20:04
Ответить
Сообщение Знаете KSV , второй вариант как раз то что нужно. Плюсую в репутацию. Автор - zegor Дата добавления - 13.05.2015 в 19:57