Здравствуйте Форумчане! Такой вопрос новичка, задача все задуманное сделать средствами VBA 1. Скопировал данные с сайта получилось 850 строк текста 2. вставил в Лист1 3. С помощью макроса отредактировал всю таблицу, удалил пустые строки, кое где заменил значения 4. преобразовал текстовые значения в цифровые Получилась некая таблица из 5 столбцов и более 800 строк. Теперь стоит задача, на этом же листе сформировать некую сводную таблицу. как можно это реализовать? Все эти данные это результаты игр баскетбольных команд всего известно что команд 30, во втором столбце и в третим эти команды иногда фигурируют как вытащить все эти 30 команд в единый список
Sanja написал: Что она должна отражать? Какой анализ Вам нужен?И почему на этом же листе?
Анализ наверно сложный, нужно что б получилась сводная таблица, где по вертикале будут обозначны все 30 команд а по горизонтали будут добавлены несколько столбцов в эти столбцы нужно занести сколкьо всего игр было, сколько побед, сколько порожений, сколько забито, сколько пропущено, на сайте Майскоре такие таблицы есть, и можно было просто их скачать, но повсей видимости там у них какая тоошибка, они суммируют все очки которые забили включая овертайм, а мне нужно вывести это
доброго, посмотрел вашу версию, и она самое то что нужно, но интересно именно средствами VBА сделать, я начинающий , и сейчас любую информацию впитываю с большим удовольствием. Всю ночь думал как это реализовать, и пока что пришло в голову только использовать циклы по строкам и заносить их в массив, ну или что то в этом роде, только как то все это убого на мой взгляд
а это и есть путь познания - от простого (убогого) к совершенству сделайте сначала чтобы просто работало, а потом можно думать, как оптимизировать совершенству нет предела, на этом пути много удовольствий
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Вообщем, пока ждал ответа нашел информацию в инете выкладываю макрос здесь может кому понадобится
Код
Sub ОтборКоманд()
Dim vItem, avArr, li As Long
ReDim avArr(1 To Rows.Count, 1 To 1)
With New Collection
On Error Resume Next
For Each vItem In Range("B2", Cells(Rows.Count, 2).End(xlUp)).Value
'Cells(Rows.Count, 1).End(xlUp) – определяет последнюю заполненную ячейку в столбце А
.Add vItem, CStr(vItem)
If Err = 0 Then
li = li + 1: avArr(li, 1) = vItem
Else: Err.Clear
End If
Next
End With
If li Then ActiveWorkbook.Sheets("Лист2").Cells(1, 1).Resize(li).Value = avArr
' heets("2").Range("D7").AutoFill Destination:=Sheets("2").Range("D7:D8"), Type:=xlFillDefault
End Sub
ex_kalibur написал: но интересно именно средствами VBА сделать
Мне было интересно на PQ, на VBA тривиально и скучно - похоже я в этом не одинок, судя по числу ответов на VBA. Выходной массив и словарь, где ключ название команды, значение номер строки выходного массива, в столбцах которой накапливаем требуемую статистику по команде.