Если вы готовы добавить UDF в ваш проект, тогда это будет сделано для вас.
Public Function CalculateBasedOnAlphabetIndex(ByVal strFormulaToEvaluate As String) As Double
Application.Volatile
Dim i As Long, strLetter, dblNumber As Double, varValue As Variant
strFormulaToEvaluate = UCase(strFormulaToEvaluate)
On Error Resume Next
For i = 65 To 90
strLetter = Chr(i)
Err.Clear
varValue = WorksheetFunction.VLookup(strLetter, Range("AlphaLookup"), 2, False)
If Err.Description = "" Then
dblNumber = varValue
Else
dblNumber = i - 65 + 1
End If
strFormulaToEvaluate = Replace(strFormulaToEvaluate, Chr(i), dblNumber, , , vbTextCompare)
Next
On Error GoTo 0
CalculateBasedOnAlphabetIndex = Evaluate(strFormulaToEvaluate)
End Function
... нет проверки ошибок как таковой, но она будет работать, пока вы придерживаетеськ основам написания формул.
Для того, чтобы вышеупомянутая работа работала, вам нужно создать именованный диапазон поверх таблицы преобразования, этот диапазон должен называться " AlphaLookup " ииспользуется в VLOOKUP в коде, чтобы получить буквы, соответствующие значению ...
..., которые будут затембыть использованы для поиска буквы и найти ее назначенное значение.Хотя есть и хитрый трюк с этим столом.Вам нужно только сохранить буквы в этой таблице, ЕСЛИ номер буквы не совпадает с индексом в алфавите.
Например, вы сказали A = 1, B = 2, C = 3, D = 4,E = 5 и I = 6, поэтому при заполнении этого диапазона все, что вам нужно будет ввести, исходя из вышеизложенного, будет I , поскольку позиция I в алфавите не 6-я, а 9-я.
Если вы не знаете, как добраться до редактора Visual Basic, нажмите Alt + F11 , и он откроется для вас.
Отсюда вставьтеНовый Модуль , а затем вставьте этот код в.
Теперь вы можете напрямую применить формулу в ячейке, например, так ...
=CalculateBasedOnAlphabetIndex(A1)
Этот UDF такжеОцените формулы и числами, так что сработают следующие примеры.
Надеюсь, это поможет вам.