2013-08-17 2 views
0

Я получаю задание для подсчета количества строк, содержащих определенный текст, и печати значения по электронной почте. Однако я застрял здесьКоличество строк с определенным текстовым значением VBA

Вот мои коды

Public Function First()Dim Source As Workbook 
Dim Var1 As Integer 
Dim Var10 As Integer 
Dim Source2 As Workbook 

Set Source = Workbooks.Open("C:\Users\HP\Desktop\IN INPROG.xlsx") 

Var1 = Application.WorksheetFunction.CountIf(Range("M1:M100"), "Orange") 

Source.Close SaveChanges:=False 

Set Source2 = Workbooks.Open("C:\Users\HP\Desktop\SR INPROG.xlsx") 

Var10 = Application.WorksheetFunction.CountIf(Range("M1:M100"), "Orange") 

Source2.Close SaveChanges:=False 

eTo = "[email protected]" 
esubject = Format(Date, "d/mmmm/yyyy") & " " & "Weekly Open Incident Reminder" 
ebody = "Dear All," & vbCrLf & "" & vbCrLf & "" & vbCrLf & "Orange: " & "SR: " & Var10  
& " IN: " & Var1 

Set app = CreateObject("Outlook.Application") 
Set itm = app.createitem(0) 
On Error Resume Next 
With itm 
.Subject = esubject 
.To = eTo 
.body = ebody 
.display 

Мой текущий код вернет все значения, как «0» Eventhough «Orange» не существует в одной из строк. Надеюсь, кто-то может помочь мне решить эту проблему. Thank you

+0

Убедитесь, что вы не имеете начальные и конечные пробелы. Посмотрите здесь: http://stackoverflow.com/questions/2964769/trim-cells-using-vba-in-excel – Ioannis

+0

У вас еще есть решение этой проблемы? –

+0

Да, я нашел решение для этого, я отправлю ответ позже = D – user2634936

ответ

0

Если вам нужно подсчитать любую строку, содержащую слово внутри строки, вы можете изменить строку в функции countif с «Оранжевый» до "*Orange*".

* Подстановочный знак представляет любое количество символов. Например. ячейка со строкой «Три оранжевых воздушных шара» не будет считаться

CountIf(Range("M1:M100"), "Orange"), но будет CountIf(Range("M1:M100"), "*Orange*").

+0

Спасибо за ваше решение, я нашел ответ для этого – user2634936

0

Спасибо за ваше решение, я нашел ответ на мой вопрос, и я отправлю его здесь

Set Source = Workbooks.Open("C:\Users\itsm-student\Downloads\IN INPROG.xlsx") 
Set Wks = Source.Worksheets("IN INPROG") 

Var1 = Application.WorksheetFunction.CountIf(Wks.Range("M1:M100"), "*Orange*") 

Что мне нужно сделать, это в основном установить переменную для листа, который вы собираетесь обратиться и в в моем случае это будет «IN PROG» и вызовет переменную при объявлении диапазона. И коды, которые я написал сверху, правы, но вместо того, чтобы искать текст «оранжевый» на листе excel, он находит текстовое значение в файле excel, в котором я делаю свой VBA. Надеюсь, что это помогает

0

я сделал:

Sub Worksheet_Change(ByVal Target As Range) 

Set Source = ThisWorkbook 

Dim Var1 As Integer 

Set Wks = Source.Worksheets("Recebimento") 

Var1 = Application.WorksheetFunction.CountIf(Wks.Range("U:U"), "*NOK*") 

If Var1 > 0 Then 
'your code 

End sub 
Смежные вопросы