【发布时间】:2016-06-16 17:47:02
【问题描述】:
我对 VB 很陌生。尝试编写宏来帮助我完成日常任务。在这个网站上呆了很多次,帮助我走到了这一步。仍然有问题,所以我想我会发布我的问题。
我需要在 A 列中搜索某个单词,然后在 B 列中搜索某个数字,然后在某个范围内的单元格值中进行计数并显示。
所以本质上如果列 A = "Word" 并且列 B
见下文。它可以工作,但由于某种原因,我得到了写入 ColumnC 范围的所有值,它不读取 A 列“Word”或 B 列 .. 任何 cmets 都会有所帮助。 提前干杯!!
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
【问题讨论】:
-
您的第一个代码是查看第 1 行到第 10000 行中的 A 列和 B 列,如果找到正确的信息,则将信息写入 L 列的第 2-6 行。这是你想要的吗?
Then之后没有变量,因此每次满足条件时,它只会不断替换 L 列中第 2-6 行中的值。 -
是的,在a列中搜索某个单词,如果为真则搜索小于0的数字,如果为真则计数并写在L列中
标签: excel search text numbers vba