Код VBA.

Set ColumnE = Worksheets("Phonebook").Range("E:E")
Dim Names As Long
'In this we will write the names of the people who have upcoming birthdays.
For Each rng In ColumnE
    If (rng.Value >= 0.9 And rng.Value <= 1) Then

    End If
Next
MsgBox " " & Names & " has an upcoming birthday."

Теперь мне нужна твоя помощь, чтобы закончить это, потому что я понятия не имею, что я делаю.

В принципе, у меня есть столбец в excel, который вычисляет время до дня рождения человека, основанного на их дне рождения; в процентах. В основном это говорит, что Джон родился ядда йадда, 90% до его дня рождения.

Я нахожу значения между 0,9 и 1, что составляет от 90% до 100%, и теперь это сложная часть.

Мне нужна ваша помощь в том, как найти имена тех людей, у которых скоро будет день рождения. Имена - 4 строки слева от процента или 5, если вы включаете столбец с процентами.

Я хочу, чтобы этот цикл нашел всех, чей день рождения подходит, и введите их имена в msgbox, поэтому, когда я нажимаю кнопку, он сообщает мне, у кого у людей день рождения.

Насколько я знаю, я должен каким-то образом использовать .Offset thingy, но я понятия не имею, как это сделать, а затем вводить несколько имен в msgbox как один тусклый.

Я был бы очень признателен за вашу помощь своим чувакам!

Всего 1 ответ


Использовать Offset для перемещения по ячейке

Option Explicit

Sub Test()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Phonebook")
Dim LRow As Long, MyCell As Range, Names As String
LRow = ws.Range("E" & ws.Rows.Count).End(xlUp).Row

For Each MyCell In ws.Range("E2:E" & LRow)
    If MyCell >= 0.9 And MyCell <= 1 Then
        Names = MyCell.Offset(, -4) & ", " & Names
    End If
Next MyCell

Names = Left(Names, Len(Names) - 2)

If Len(Names) Then
    MsgBox Names & " has an upcoming birthday!"
Else
    MsgBox "No upcoming birthdays."
End If

End Sub

Есть идеи?

10000