Office中国论坛/Access中国论坛

标题: 关于取值的操作 [打印本页]

作者: star-t    时间: 2005-10-11 16:14
标题: 关于取值的操作
例如:





<COLGROUP>

<COL style="WIDTH: 54pt" span=4 width=72>





2,289.27

2,307.52

2,286.79

2,305.24



2,311.63

2,312.53

2,284.11

2,289.47



2,319.52

2,325.89

2,314.48

2,325.89



第一列我希望取出百位的数字,将取出的值放入右侧的单元格中。

第二列我希望取出个位的数字,将取出的值放入右侧的单元格中。

第三列我希望取出小数点后第一位的数字,将取出的值放入右侧的单元格中。

第四列我希望取出小数点后第二位的数字,将取出的值放入右侧的单元格中。



下面是我希望等到的结果,希望指点一二,谢谢。





<COLGROUP>

<COL style="WIDTH: 54pt" width=72>

<COL style="WIDTH: 54pt" span=2 width=72>

<COL style="WIDTH: 54pt" width=72>

<COL style="WIDTH: 16pt; mso-width-source: userset; mso-width-alt: 672" span=4 width=21>





2,289.27

2,307.52

2,286.79

2,305.24

2

7

7

4










作者: scottwang    时间: 2005-10-11 16:31
=MID(A1,FIND(".",A1)+COLUMN(A1)*2-5-(COLUMN(A1)>3),1) 右拉,下拉.
作者: 红池坝    时间: 2005-10-11 18:44
公式可以更简单些取A列百位:=LEFT(RIGHT(INT(A1),3))取B列个位:=RIGHT(INT(B1),1)取C列十分位数(小数点后第一位):=MID(C1,FIND(".",C1)+1,1)取D列百分位数(小数点后第二位):=MID(D1,FIND(".",D1)+2,1)     ====>(这个可以用上一个填充)
作者: scottwang    时间: 2005-10-11 19:35
以下是引用红池坝在2005-10-11 10:44:00的发言:



公式可以更简单些

取A列百位:=LEFT(RIGHT(INT(A1),3))

取B列个位:=RIGHT(INT(B1),1)

取C列十分位数(小数点后第一位):=MID(C1,FIND(".",C1)+1,1)

取D列百分位数(小数点后第二位):=MID(D1,FIND(".",D1)+2,1)     ====>(这个可以用上一个填充)



这样一来,不是更复杂吗?!  至少需要三个公式.  用2楼公式的目的就是要用EXCEL填充的优势.
作者: 红池坝    时间: 2005-10-12 02:47
只能说:愚昧

复杂或者简洁不在于输入多少,而在于是否便于理解,是否灵活。如果用2楼的公式,请看下图,黄色位置的答案是错误的

[attach]13579[/attach]

实事上,楼主的要求很简单:

百位就是小数点前的第3位:=MID(A2,FIND(".",A2)-3,1)

个位就是小数点前的第1位:=MID(A2,FIND(".",A2)-1,1)

十分位就是小数点后第1位:=MID(A2,FIND(".",A2)+1,1)

百分位就是小数点后第2位:=MID(A2,FIND(".",A2)+2,1)

…… ……

以此类推,而至于是取那一位数字(楼主的任务)并没有明确的规律,所以使用一个公式来类推是没有道理的。比如,假如是取第2列的十位的数字,用2楼公式显然还是会得到个位的结果,再或者,不是取第二列,而是继续取第1列或者第4列的数字,结果也会出错。这说明2楼的公式表面上在楼主这个特例中成立,但并不能推而广之,不是正确的思路

至于我为什么把前面两个取整来算呢,是因为这样比使用find()函数查找小数点的位置来得快,也更简洁。


作者: 一个人的夜    时间: 2005-10-13 19:25
更晕.*100,用什么公式取不是都方便了吗?
作者: 一个人的夜    时间: 2005-10-13 19:40
而且看样子,楼上想实现发票样式.(这在凭证中要用到)<COLGROUP><COL style="WIDTH: 21pt; mso-width-source: userset; mso-width-alt: 896" width=28><COL style="WIDTH: 33pt; mso-width-source: userset; mso-width-alt: 1408" span=3 width=44><COL style="WIDTH: 21pt; mso-width-source: userset; mso-width-alt: 896" span=6 width=28>亿千万百万十万万千百元角分=IF(12-COLUMN(B1:K1)>LEN(A2*100)+1,"",MID(REPT("¥",10-LEN(A2*100))&A2*100,COLUMN(B1:K1)-1,1))多单元格联合数组公式.




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3