发布网友 发布时间:2022-04-25 06:09
共3个回答
热心网友 时间:2023-11-01 21:47
offset函数,可以改变区域位置、大小。应该是最合适这个场景的函数了。
另外用indirect+address也能实现,比较别扭一些。
热心网友 时间:2023-11-01 21:47
修改公式:
=SUMIF(消费明细!A$2:A$3000,A2&"*",OFFSET(消费明细!$A$2,,MATCH(G$1,消费明细!$A$1:$P$1,0)-1,2999,))追问谢谢,好了。这个思路很不错。运用函数得出整体引用区域。
热心网友 时间:2023-11-01 21:48
从PHP内核的角度跟你解释下吧,你可以深入理解下,就完全明白了;
PHP的变量在内核中都是通过C语言的结构zval来存储的(你没学过C,你可以理解为是个对象,里面的成员变量都是类的属性,暂时先这样理解),zval结构如下:
struct _zval_struct {
zvalue_value value; // 存储变量的值
zend_uint refcount__gc; //表示引用计数 默认为:1
zend_uchar type; // 变量具体的类型
zend_uchar is_ref__gc; //表示是否为引用
};
举个例子,php代码如下:
$a = 10;
$b = $a;
这时$b没有引用,只是将$a的值赋给了$a,那么zval这个结构中的refcount__gc就变为2了,而is_ref__gc还是false,表示未引用,因为内核$a已经开辟了一块内存空间,当$a赋值给$b时,$b的值只指向了$a,这样就省去了重新开辟一块内存,但是当$b值被改变时($a的值不会变),$b又将会开辟一块新的内存空间,这就是所以的写时复制,到这里,楼主已经明白了,PHP变量在内核中的如何存储了,下面就讲下引用:
$a = 10;
$b = &$a;
这个时候,内核中存储$a的结构is_ref__gc标记为true,代表是引用,那么$a和$b都指向了同一个内存地址,当$b=20的时候,$a也会变成20,说到这里,楼主应该明白区别了吧?追问谢谢回答了这么多,但是我问的是excel表格数据处理的事情。