Я очень новичок в VB. Попытка написать макрос, чтобы помочь моим повседневным задачам. Был на этом сайте совсем немного, помог мне зайти так далеко. Все еще имея проблему, я подумал, что поставил бы свою проблему.Не удается найти диапазон
Мне нужно найти столбец A для определенного Word, затем найти столбец B для определенного числа, а затем подсчитать и отобразить значения ячеек в пределах диапазона.
Поэтому в основном, если столбец A = "Слово" и столбец B < 0 Тогда Cell.value = СЧЕТЕСЛИ (ColumnC, Range) Else MsgBox = "Ничего не найдено"
См. Ниже Он работает, но по какой-то причине я получаю все значения, записывающие диапазон ColumnC, он не читает колонку «Слово» или столбец B. Любые комментарии помогут. Advance Cheers !!
Sub Word()
Dim i As Integer, HDIpctCompl As Single
For i = 1 To 10000
If Worksheets("1").Cells(i, 1) = "Word " And Worksheets("1").Cells(i, 2) < 0 Then
Worksheets("1").Cells(2, 12).Value = Application.WorksheetFunction.CountIfs(Worksheets("1").Range("C:C"), ">=0.5", Worksheets("1").Range("C:C"), "<=0.599")
Worksheets("1").Cells(3, 12).Value = Application.WorksheetFunction.CountIfs(Worksheets("1").Range("C:C"), ">=0.4", Worksheets("1").Range("C:C"), "<=0.499")
Worksheets("1").Cells(4, 12).Value = Application.WorksheetFunction.CountIfs(Worksheets("1").Range("C:C"), ">=0.3", Worksheets("1").Range("C:C"), "<=0.399")
Worksheets("1").Cells(5, 12).Value = Application.WorksheetFunction.CountIfs(Worksheets("1").Range("C:C"), ">=0.2", Worksheets("1").Range("C:C"), "<=0.299")
Worksheets("1").Cells(6, 12).Value = Application.WorksheetFunction.CountIfs(Worksheets("1").Range("C:C"), ">=0.1", Worksheets("1").Range("C:C"), "<=0.199")
HDIpctCompl = i 'Progress bar, works, different Sub
HDIprogress HDIpctCompl
End If
Next i
End Sub
Я также возиться с чем-то ниже
Sub Word()
Dim i As Long, wb As Workbook, sh1 As Worksheet, ClmA As Range, Find As Range, FindB As Range, ClmB As Range
Set wb = ThisWorkbook
Set sh1 = wb.Sheets("1")
Set ClmA = sh1.Range("A1:A10000")
Set ClmB = sh1.Range("B1:B10000")
Set Find = ClmA.Find("Word")
Set FindB = ClmB.Find("< 0 ")
For i = 1 To 10000
If Find = 0 And FindB = 1 Then
Else
sh1.Cells(2, 7).Value = Application.WorksheetFunction.CountIfs(sh1.Range("C:C"), ">=0.4", sh1.Range("C:C"), "<=0.499")
sh1.Cells(3, 7).Value = Application.WorksheetFunction.CountIfs(sh1.Range("C:C"), ">=0.3", sh1.Range("C:C"), "<=0.399")
sh1.Cells(4, 7).Value = Application.WorksheetFunction.CountIfs(sh1.Range("C:C"), ">=0.2", sh1.Range("C:C"), "<=0.299")
sh1.Cells(5, 7).Value = Application.WorksheetFunction.CountIfs(sh1.Range("C:C"), ">=0.1", sh1.Range("C:C"), "<=0.199")
sh1.Cells(6, 7).Value = Application.WorksheetFunction.CountIfs(sh1.Range("C:C"), ">=0.0", sh1.Range("C:C"), "<=0.099")
If Find = 1 And FindB = 0 Then
Else
MsgBox "No information detected", vbOKOnly
Exit Sub
VIApctCompl = i
Viaprogress VIApctCompl
End If
End If
Next i
End Sub
Ваш первый код смотрит на колонке А и столбца B в строках 1 к 10000, а затем записывая информацию в строки 2-6 в столбце L, если найдена правильная информация. Это то, что вы намеревались? После 'Then' нет переменной, поэтому она будет продолжать заменять значения в строках 2-6 в столбце L каждый раз, когда будут выполнены критерии. – TheEngineer
Да, найдите определенное слово в столбце a, затем, если истинный поиск чисел меньше 0, то если значение true count и запись в столбце L – User123