2016-05-12 3 views
0

Мне интересно, есть ли способ получить логарифм значения для любой базы.Логарифм VBA любой базы

В частности, я хочу получить значение любого целого числа на базе 11.5.

В Excel У меня есть эта формула:

=LOG(A1,11.5) 

Однако в этой ссылке: Logarithm is different using VBA and Excel function и многие другие утверждают, что функция рабочего листа отличается от заявления VBA.

Есть ли способ получить базовый 11.5 логарифм любого целого числа в VBA?

+2

Это [только математика] (http://stackoverflow.com/a/9071658/11683). – GSerg

+1

Есть ли причина, по которой вы не можете применить объект [WorksheetFunction] (https://msdn.microsoft.com/en-us/library/office/ff834434.aspx) или [объект приложения Excel] (https://msdn.microsoft .com/en-us/library/office/ff194565.aspx), чтобы использовать функцию собственного рабочего листа? например 'dim x as double: x = workheetfunction.log (sheet1.cells (1,1), 11.5)' – Jeeped

+0

Да, мое пометка отключена. Я использую Word VBA на самом деле. – ib11

ответ

4

Из моего учебника по математике:

журнала бх = лог сх/Журнал сб

Поэтому в VBA:

Log(x)/Log(11.5) 

даст вам основание 11,5 логарифм x, и это на самом деле не важно, что база Log функции VBA является (хотя, как ваши состояния ссылок, на самом деле это естественное войти т.е. базовый е)

+1

Был действительный вопрос, хотя ... для тех из нас, кто не так тщательно изучил наш математический учебник ... – ib11

+1

Ну, мне нужно было проверить учебник только для того, чтобы убедиться ... – nekomatic

+0

Только для последнего штриха см. мой ответ , – ib11

1

на основании ответа nekomantic и комментарии, это метод расширения для расширения функциональных возможностей VBA с бревенчатыми на любой основе:

Function Logn(base As Double, x As Long) 

    Logn = Log(x)/Log(base) 

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