请教excel函数

已知A1,要求B1为一个随机数值,且B1满足:1、X≤(B1-A1)*100/B1≤Y 2、A1<B1<Z 请教高手
另有一条件A1、B1均为正数

知道B1的正负情况吗?我就当它是大于0的哈,如果不知道的话,稍微麻烦一点点,你看个思路就行了。
首先化简上述式子可以得到
100*A1/(X-1) <= B1 <= 100A1/(Y-1)
A1< B1 <Z

也就是说B1的范围是 这两者决定的。把上限叫 up , 下限叫 down
function foryou(A1,X,Y,Z)
if A1> 100*A1/(X-1) then
down = A1
else
down = 100*A1/(X-1)
endif

if Z > 100A1/(Y-1) then
up = 100A1/(Y-1)
else
up = Z
endif

foryou = down + (1-random())*(up-down)
end function

这个random() 是个 0-1之间的随机数,这样B1就是落在指定范围内的随机数了。

这个函数还有些不严格的地方,比如没怎么考虑大于等于,而是全部当大于处理了。你补充一下,要是不行,我再告诉你。追问

真的很感谢您,但我需要的是excel函数公式

追答

这就是excel的函数啊,如果你不会用自定义函数
那么公式就是:
B1 = if (A1> 100*A1/(X-1),A1,100*A1/(X-1) + (1-random())*(if (Z > 100A1/(Y-1),100A1/(Y-1),Z)-if (A1> 100*A1/(X-1),A1,100*A1/(X-1))

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-24
得有一个依据,假如截取到区或市都可以,不妨设一个IF函数来判断,假设你的地址是在A列中那么:
1、在B列对应的单元格中输入=IF(ISERR(FIND("市",A1)),LEFT(A1,FIND("区",A1)),LEFT(A1,FIND("市",A1)))
2、执行第一步后就提取了市或者区前面的字段了;
3、要通过市或者区来找邮编,首先应当把sheet2表中的邮编放到地址的右侧一列,否则VLOOKUP不方便引用;
4、假设sheet2中调整后地址在A列,邮编在B列,那么在sheet1中输入=VLOOKUP(B2,sheet2!A:B,2,FALSE);
5、执行以上操作后可达到你要的效果,但是要注意:
1)、部分邮编可能匹配不到或者匹配不精确;
2)、在删除完整的地址列之前切记将带有公式的字符去公式化,否则一删除后就成乱码了;
3)、其实可以不删除地址列,可以对其隐藏然后保护工作表加密。
第2个回答  2011-03-24
那是要已知数值的追问

X、Y、Z都是已知的。请教

第3个回答  2011-03-24
那这个里面的X、Y、Z都不知道的话可能不行追问

X、Y、Z都是已知的。请教

追答

我这样做了一下,A1=INT(RAND()*100),A1随机出0-100的整数;A2=INT(RAND()*100),A2为X的值,也是随机的;B1=100*A1*(100-A2);A3=(B1-A1)*100/B1+1,A3为Y的值;A4=B1+1,为Z的值,其实你出的Z没有任何用。

第4个回答  2020-10-01

你学会了没?