楼主: vivianeshen
5271 5

[问答] 求助,在VBA里不能开三次根号.不知道哪里出问题了..在线等..... [推广有奖]

  • 0关注
  • 0粉丝

初中生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
80 点
帖子
13
精华
0
在线时间
5 小时
注册时间
2010-12-22
最后登录
2012-11-25

楼主
vivianeshen 发表于 2012-5-1 19:43:29 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我要算一个3年的增长率原始公式是 PE croissance = (PE ratio / PE moyenne -1)^(1/3)

每次一运行就显示wsPEtx.Cells(i + 2, j + 1).Value = (wsPE.Cells(i + 2, j + 1).Value / wsPEm.Cells(i + 2, j + 1).Value - 1)^ (1 / 3)是无效的过程调用或参数
如果把^ (1 / 3)去掉,或者换成^ 2, 程序就可以运行
数据里面含有负数,但是负数也是可以开三次方根号的呀
实在不知道哪里出问题了,麻烦大家帮我看看
谢谢了!
这是我写的code

Option Explicit
Option Base 1
Sub CalTaux()


Dim wsPE As Worksheet, wsPEm, wsPEtx As Worksheet

Dim L As Integer, C As Integer, i As Integer, j As Integer



Set wsPE = ThisWorkbook.Worksheets("PE ratio")
Set wsPEm = ThisWorkbook.Worksheets("PE moyenne")
Set wsPEtx = ThisWorkbook.Worksheets("PE croissance")

For j = 1 To 10

For i = 1 To 10


  If wsPEm.Cells(i + 2, j + 1).Value = 0 Then
  wsPEtx.Cells(i + 2, j + 1).Value = 0
  Else: wsPEtx.Cells(i + 2, j + 1).Value = (wsPE.Cells(i + 2, j + 1).Value / wsPEm.Cells(i + 2, j + 1).Value - 1) ^ (1 / 3)
  End If


  Next i

Next j

End Sub



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:VBA 在线等 不知道 worksheets worksheet 增长率 在线 程序

未命名.bmp (1.09 MB)

code

code

沙发
vivianeshen 发表于 2012-5-1 19:54:50
Option Explicit
Option Base 1
Sub CalTaux()


Dim wsPE As Worksheet, wsPEm, wsPEtx As Worksheet

Dim L As Integer, C As Integer, i As Integer, j As Integer



Set wsPE = ThisWorkbook.Worksheets("PE ratio")
Set wsPEm = ThisWorkbook.Worksheets("PE moyenne")
Set wsPEtx = ThisWorkbook.Worksheets("PE croissance")

For j = 1 To 10

For i = 1 To 10
   
  
  If wsPEm.Cells(i + 2, j + 1).Value = 0 Then
  wsPEtx.Cells(i + 2, j + 1).Value = 0
  Else: wsPEtx.Cells(i + 2, j + 1).Value = (wsPE.Cells(i + 2, j + 1).Value / wsPEm.Cells(i + 2, j + 1).Value - 1) ^ (1 / 3)
  End If


  Next i
   
Next j

End Sub

藤椅
Quasy 在职认证  发表于 2012-5-1 20:00:32
利用Exp和Log,比如对数值A开3次根号,可以这样写:
Answer = Exp(1/3*Log(A))
当然, 运算之前要先检查A是否为正数。

板凳
vivianeshen 发表于 2012-5-1 20:04:32
Quasy 发表于 2012-5-1 20:00
利用Exp和Log,比如对数值A开3次根号,可以这样写:
Answer = Exp(1/3*Log(A))
当然, 运算之前要先检查A ...
数据里面有负数,应该不能用LOG吧

报纸
vivianeshen 发表于 2012-5-1 20:15:04

地板
Quasy 在职认证  发表于 2012-5-1 20:29:45
vivianeshen 发表于 2012-5-1 20:04
数据里面有负数,应该不能用LOG吧
是负数就先*(-1),计算完成后再*(-1)。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-22 21:54