基于单元格文本值在Excel工作表之间动态SUM

时间:2017-01-19 18:07:40

标签: excel excel-formula

我试图根据另一个单元格的文本内容在多个工作表中动态地对相同的单元格求和。 在一个单元格中,文件将始终显示“数据通过[月份名称] [年]”。 我有一个提取月份的公式,但我无法弄清楚如何将它嵌入我的其他公式中,这在静态时也有效。

以下是我提取月份名称的公式:

=MID(A2,14,LEN(A2)-18)

以下是我的公式对表格进行静态求和的公式,这些表格以月份名称命名:

=SUM(January:December!J5)

以下是我正在使用的错误公式:

=SUM("January:" & (MID(A2,14,LEN(A2)-18)) & "!J5")

我也尝试过:

=SUM(INDIRECT("January:" & MID(A2,14,LEN(A2)-18) & "!J5"))

有人对我有任何提示吗?

提前致谢!

编辑:

编辑后,我现在有一个公式,它会给我第一个和最后一个月的总和,但不是两者之间的总和。

=SUM(INDIRECT("January! J5"),INDIRECT(MID(A2,14,LEN(A2)-18)&"!J5"))

简而言之,我需要用相当于冒号的逗号替换该逗号,但:":"都不起作用。

1 个答案:

答案 0 :(得分:2)

在某处按顺序放置工作表的名称,然后使用以下公式:

function getAssignedToMe(){

    var viewFields = '<ViewFields><FieldRef Name="ID" /><FieldRef Name="Title" /><FieldRef Name="Created" /><FieldRef Name="FileRef" />'
        +'<FieldRef Name="AssignedTo" /><FieldRef Name="Status" /></ViewFields>';   

    // filter by AssignedTo is current user ID or assigned to the current user's group;
    var camlQuery = '' + 
        '<Query>' + 
            '<Where>' + 
                '<And>' + 
                    '<Or>' + 
                        '<Membership Type="CurrentUserGroups"><FieldRef Name="AssignedTo"/></Membership>' + 
                        '<Eq><FieldRef Name="AssignedTo"/><Value Type="Integer"><UserID/></Value></Eq>' + 
                    '</Or>' + 
                    '<And>' + 
                        '<Neq><FieldRef Name="Status"/><Value Type="Text">Completed</Value></Neq>' + 
                        '<Geq><FieldRef Name="Created" /><Value Type="DateTime"><Today OffsetDays="-60" /></Value></Geq>' + 
                    '</And>' + 
                '</And>' + 
            '</Where>' + 
            '<OrderBy><FieldRef Name="Created" Ascending="TRUE"/></OrderBy>' +
        '</Query>';

    getListItems('/mysite', 'Tasks', viewFields, camlQuery, callback, 50);

    // transform the returned XML to JSON
    function callback(xmlDoc){
        var data = [];
        $(xmlDoc).find('*').filter(function () {
            return this.nodeName.toLowerCase() == 'z:row';
        }).each(function (i, el) {
            // do something with the data
            var id = parseInt($(el).attr('ows_ID'));
            data.push({
                Id: id
            });
            /* ... */
        });
    };

 };

 function getListItems(siteUrl, listName, viewFields, query, callback, rowLimit) {
    if (rowLimit === void 0) { rowLimit = 25; }

    var packet = '<?xml version="1.0" encoding="utf-8"?>' +
        '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
        '<soap:Body>' +
        '<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">' +
        '<listName>' + listName + '</listName>' +
        '<query>' + query + '</query>' +
        '<viewFields>' + viewFields + '</viewFields>' +
        '<rowLimit>' + rowLimit + '</rowLimit>' +
        '</GetListItems>' +
        '</soap:Body>' +
        '</soap:Envelope>';

    var $jqXhr = $.ajax({
        url: siteUrl + '/_vti_bin/lists.asmx',
        type: 'POST',
        dataType: 'xml',
        data: packet,
        headers: {
            "SOAPAction": "http://schemas.microsoft.com/sharepoint/soap/GetListItems",
            "Content-Type": "text/xml; charset=utf-8"
        }
    }).done(function (xmlDoc, status, error) {
        callback(xmlDoc);
    }).fail(function (jqXhr, status, error) {
        callback(null, status + ': ' + error);
    });
};

我把我的列表从D1开始然后下降。