2010-11-03 2 views
1

У меня есть первенствует лист с 2 колонкамиExcel формула поможет

Contact Status Max Probability 
80-Opp   Closed Won 
0-NC    Closed Won 
40-Pending  30-Connect 
10-Working  20- Engagement 
80-Opportunity 30-Connect 
40-Pending  10- Engagement 

мне нужно проверить, если не находится в состоянии контакта т.е. числового значения до «-» меньше, чем числовое значение в максимальном вероятностная до «- ', тогда мне нужно все значение максимальной вероятности обновить поле состояния контакта

Например,

10-Working  20- Engagement 

10-Рабочие следует заменить 20- Engagement

ИЛИ

Мы можем иметь 20- Engagement в новом столбце, если вышеуказанный кондиционер выполнено, если заменить столбец контактого состояния сложно Как это можно достичь?

+0

Вы хотите, чтобы макрос сделал это? –

ответ

2

Этот маленький макрос сделает трюк. Просто измените на стартовую строку и ColA/B на два столбца, которые вы хотите использовать.

Обратите внимание, что GetNum возвращает -1, если в начале нет номера, который в этой реализации означает отсутствие копирования. Неясно, что вы хотели сделать tits Closed Won, поэтому я выбрал самый безопасный вариант. Если вы хотите, чтобы оно было скопировано, просто верните огромное количество вместо -1.

Option Explicit 

Function GetNum(s As String) As Integer 
    If Mid(s, 1, 1) < "0" Or Mid(s, 1, 1) > "9" Then 
     GetNum = -1 
    Else 
     GetNum = Val(s) 
    End If 
End Function 

Sub Macro1() 
    Dim Row As String 
    Dim ColA As String 
    Dim ColB As String 

    ColA = "A" 
    ColB = "B" 
    Row = "2" 
    While Range(ColA & Row).Value <> "" 
     If GetNum(Range(ColA & Row).Value) < GetNum(Range(ColB & Row).Value) Then 
      Range(ColA & Row).Value = Range(ColB & Row).Value 
     End If 
     Row = CStr(Val(Row) + 1) 
    Wend 
End Sub 

Это был протестирован на:

                                        alt text

для генерации:

                                        alt text

1

Этот макрос будет делать:

Sub a() 
ColumnContSt=1 
ColumnMaxProb=2 
i = 1 
While (Cells(i, 2) <> "") 
    colB = Cells(i, ColumnMaxProb) 
    colA = Cells(i, ColumnContSt) 
    posB = InStr(1, colB, "-") 
    posA = InStr(1, colA, "-") 
    If (posB <> 0 And posA <> 0) Then 
     intColB = CInt(Mid(colB, 1, posB - 1)) 
     intColA = CInt(Mid(colA, 1, posA - 1)) 

     If (intColA < intColB) Then 
      Cells(i, 1) = Cells(i, 2) 
     End If 
    End If 
    i = i + 1 
Wend 
End Sub 

Просто измените ColumnContSt = 1 и ColumnMaxProb = 2 для фактического столба ЧИСЛА т.е.. A = 1, B = 2 и т. Д.

HTH!

1

Если вы гибкий о фактических данных, самый простой способ сделать это, чтобы сделать две колонки (могут быть скрыты в каком-то далеком листе):

0 NC 
10 Engagement 
30 Connect 
... 

И затем использовать VLOOKUP(CELL_WITH_PROBABILITY, REGION_WITH_TABLE, 2, true). Поэтому, если вы поместите мою маленькую таблицу из 3 элементов в верхний угол листа и вероятность в C1, это будет выглядеть так: VLOOKUP(A1:B3, C1, 2, true)

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