Доброго времени суток! Помогите, пожалуйста, написать код. Даны 2 таблицы, расположенные одна под другой. Нужно посчитать сколько строк в первой и второй, присвоив значения переменным. Заранее благодарю)
Доброго времени суток! Помогите, пожалуйста, написать код. Даны 2 таблицы, расположенные одна под другой. Нужно посчитать сколько строк в первой и второй, присвоив значения переменным. Заранее благодарю)Folly
Понимаете, когда задача ставится нечётко и является искусственно-учебной (либо жестко вырвана из контекста), тогда и возникает куча вопросов и уточнений
Понимаете, когда задача ставится нечётко и является искусственно-учебной (либо жестко вырвана из контекста), тогда и возникает куча вопросов и уточненийabtextime
На случай, если в таблицах есть промежутки, такой тупой вариант перебором [vba]
Код
Sub tt() r0_ = 3 r1_ = Range("A" & Rows.Count).End(xlUp).Row n_ = Range("A" & r0_) For i = r0_ + 1 To r1_ If Range("A" & i) = n_ Then a = i - 3 - r0_ b = r1_ - i + 1 MsgBox "a = " & a & ", b = " & b Exit Sub End If Next i End Sub
[/vba]
На случай, если в таблицах есть промежутки, такой тупой вариант перебором [vba]
Код
Sub tt() r0_ = 3 r1_ = Range("A" & Rows.Count).End(xlUp).Row n_ = Range("A" & r0_) For i = r0_ + 1 To r1_ If Range("A" & i) = n_ Then a = i - 3 - r0_ b = r1_ - i + 1 MsgBox "a = " & a & ", b = " & b Exit Sub End If Next i End Sub
abtextime, это скорее задача, вырванная из контекста. Из 1С выгружается 2 таблицы одна под другой и для дальнейшего анализа необходимо было посчитать количество строк в каждой. Всем спасибо.
abtextime, это скорее задача, вырванная из контекста. Из 1С выгружается 2 таблицы одна под другой и для дальнейшего анализа необходимо было посчитать количество строк в каждой. Всем спасибо.Folly
Сообщение отредактировал Folly - Суббота, 19.03.2016, 19:24
Для неведомого числа таблиц без разрывов, которые неведомо где начинаются и кончаются: [vba]
Код
Sub Считать_строки()
Dim i, n, m As Long
n = Cells(Rows.Count, 1).End(xlUp).Row m = ActiveSheet.UsedRange.Columns.Count + 1 Do While n > 0 i = 1 Do While Cells(n - 1, 1) <> "" n = n - 1 i = i + 1 Loop Cells(n, m).Value = i & " строк" On Error Resume Next Do While Cells(n - 1, 1) = "" If Err.Number <> 0 Then Exit Do n = n - 1 Loop n = n - 1 Loop
End Sub
[/vba] Макрос заточен под отсутствие объединённых ячеек в первой колонке. При их наличии результат непредсказуем — от просчёта не всех таблиц до вылета с Type mismatch.
Для неведомого числа таблиц без разрывов, которые неведомо где начинаются и кончаются: [vba]
Код
Sub Считать_строки()
Dim i, n, m As Long
n = Cells(Rows.Count, 1).End(xlUp).Row m = ActiveSheet.UsedRange.Columns.Count + 1 Do While n > 0 i = 1 Do While Cells(n - 1, 1) <> "" n = n - 1 i = i + 1 Loop Cells(n, m).Value = i & " строк" On Error Resume Next Do While Cells(n - 1, 1) = "" If Err.Number <> 0 Then Exit Do n = n - 1 Loop n = n - 1 Loop
End Sub
[/vba] Макрос заточен под отсутствие объединённых ячеек в первой колонке. При их наличии результат непредсказуем — от просчёта не всех таблиц до вылета с Type mismatch.StoTisteg
Для неведомого числа таблиц без разрывов, которые неведомо где начинаются и кончаются:
А попроще? [vba]
Код
Sub www() Dim m&, a As Range m = ActiveSheet.UsedRange.Columns(1).Column + ActiveSheet.UsedRange.Columns.Count For Each a In [a:a].SpecialCells(2).Areas Cells(a.Row, m) = a.Rows.Count Next End Sub
Для неведомого числа таблиц без разрывов, которые неведомо где начинаются и кончаются:
А попроще? [vba]
Код
Sub www() Dim m&, a As Range m = ActiveSheet.UsedRange.Columns(1).Column + ActiveSheet.UsedRange.Columns.Count For Each a In [a:a].SpecialCells(2).Areas Cells(a.Row, m) = a.Rows.Count Next End Sub
Sub www() Dim m&, a As Range m = ActiveSheet.UsedRange.Columns(1).Column + ActiveSheet.UsedRange.Columns.Count On Error Resume Next For Each a In [a:a].SpecialCells(2).Areas If Err.Number <> 0 Then Exit For Cells(a.Row, m) = a.Rows.Count Next End Sub
[/vba]
Тогда уж [vba]
Код
Sub www() Dim m&, a As Range m = ActiveSheet.UsedRange.Columns(1).Column + ActiveSheet.UsedRange.Columns.Count On Error Resume Next For Each a In [a:a].SpecialCells(2).Areas If Err.Number <> 0 Then Exit For Cells(a.Row, m) = a.Rows.Count Next End Sub
Даны 2 таблицы, расположенные одна под другой. Нужно посчитать сколько строк в первой и второй, присвоив значения переменным.
Ответ дал еще в №4. Мы ведь не рассматриваем, как уберечься от недолугих юзверей. А при желании из этого макроса можно сделать размазню на 10 страниц. KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728