Страницы: 1
RSS
Помощь в реализации отбора данных, Отбор данных по значению
 
Здравствуйте друзья-товарищи. Помогите реализовать пару строчек. Код абсолютно рабочий и достаточно быстрый, по сравнению с другими подобными. Суть такова, что когда цикл доходит до  таблицы "_form_overall", там есть значения "5","10","15" данные Val(m.submatches(6). Мне нужно, чтобы когда значение Val(m.submatches(6) равнялось 5, значения записывались в таблицу, в противном случае else endif. Повторюсь, манипуляция нужна только для таблицы "_form_overall". Для остальных ("_table_overall", "_table_home", "_table_away"), штатный режим работы, без отбора. Оооочеень сильно нужна помощь.
Код
Sub getData(match_id)
On Error Resume Next
Dim table_a
home_id = Sheets("Àíàëèç").Range("B10").Value
away_id = Sheets("Àíàëèç").Range("B11").Value
tournament_id = Sheets("Àíàëèç").Range("B13").Value
tournament_stage_id = Sheets("Àíàëèç").Range("B12").Value
selectSource
clearData
table_a = Array("_table_overall", "_table_home", "_table_away", "_form_overall")
optimize (True)
For temp_table = 0 To 5
a = 2
If temp_table = 0 Then Sheets("Äàííûå").Select
Select Case temp_table
Case 0: nmshet = "Äàííûå": frstc = 1: lstc = 10
Case 1: nmshet = "Äàííûå": frstc = 12: lstc = 21
Case 2: nmshet = "Äàííûå": frstc = 23: lstc = 32
Case 3: nmshet = "Äàííûå": frstc = 34: lstc = 42
End Select
Call Download_site("https://d." & sourcer & "x/feed/ss_1_" & tournament_id & "_" & tournament_stage_id & table_a(temp_table) & "?hp1=" & home_id & "&hp2=" & away_id & "&e=" & match_id, fs_input)
Set objRegExp = CreateObject("VBScript.RegExp"): objRegExp.Global = True: objRegExp.MultiLine = False
objRegExp.Pattern = Chr(9): fs_input = objRegExp.Replace(fs_input, "")
objRegExp.Pattern = Chr(10): fs_input = objRegExp.Replace(fs_input, "")
objRegExp.Pattern = Chr(13): fs_input = objRegExp.Replace(fs_input, "")
If InStr(1, fs_input, "col_wins_pen") = 0 And InStr(1, fs_input, "col_wins_ot") = 0 Then
objRegExp.Pattern = ">(\d+)" & Chr(46) & "<(.*?)team_name(.*?)\;" & Chr(34) & ">(.*?)<(.*?)matches(.*?)>(.*?)<(.*?)>(.*?)>(.*?)<(.*?)>(.*?)>(.*?)<(.*?)>(.*?)>(.*?)<(.*?)>(.*?)>(.*?):(.*?)<(.*?)>(.*?)>(.*?)<(.*?)<(.*?)>(.*?)<"
If objRegExp.TEST(fs_input) = True Then
Set objMatches = objRegExp.Execute(fs_input)
cntx = objMatches.Count
'Call Show_PrBar_Or_No(cntx, "Çàãðóçêà òàáëèö...")
For Each m In objMatches
'If bShowBar Then Call MyProgresBar
table_m = Array(Val(m.submatches(0)), m.submatches(3), Val(m.submatches(6)), Val(m.submatches(9)), Val(m.submatches(12)), Val(m.submatches(15)), Val(m.submatches(18)), Val(m.submatches(19)), Val(m.submatches(22)), Val(m.submatches(25)))
Sheets(nmshet).Range(Cells(a, frstc), Cells(a, lstc)).Value = table_m
a = a + 1
Next
'If bShowBar Then Unload frmStatusBar
End If
End If
Next
optimize (False)
End Sub
 
Пробовал так.
Код
If temp_table = 3 Then form = m.submatches(6)
If form = 5 Then
_form_overall записывается то, что нужно. Но остальные таблицы пустые.
 
Здравствуйте. А почему тему создали в Курилке? Попросите модераторов перенести ее в основную ветку или создайте новую. С описанием задачи и файлом-примером.
Цитата
Код абсолютно рабочий
П.С. Что-то мне подсказывает, что если отключить обработчик ошибок, то на какой-то итерации цикла For temp_table = 0 To 5 вы получите ошибку в переменной table_a(temp_table)
Изменено: Sanja - 11.11.2023 14:20:24
Согласие есть продукт при полном непротивлении сторон.

Контакты, благодарности
 
Отбор решил следующим способом:
Код
If temp_table <> 3 Then
table_m = Array(Val(m.submatches(0)), m.submatches(3), Val(m.submatches(6)), Val(m.submatches(9)), Val(m.submatches(12)), Val(m.submatches(15)), Val(m.submatches(18)), Val(m.submatches(19)), Val(m.submatches(22)), Val(m.submatches(25)))
Sheets(nmshet).Range(Cells(a, frstc), Cells(a, lstc)).Value = table_m
Else
If Val(m.submatches(6)) = 5 Then
table_m = Array(Val(m.submatches(0)), m.submatches(3), Val(m.submatches(6)), Val(m.submatches(9)), Val(m.submatches(12)), Val(m.submatches(15)), Val(m.submatches(18)), Val(m.submatches(19)), Val(m.submatches(22)), Val(m.submatches(25)))
Sheets(nmshet).Range(Cells(a, 34), Cells(a, 43)).Value = table_m
End If
Возможно решение не самое лучшее, но результат устраивает.
Страницы: 1
Наверх