sumifs с категориями, зависящими от фильтра [duplicate]

    WebView browser = new WebView(this);
    browser.getSettings().setJavaScriptEnabled(true);
    browser.loadUrl("file:///android_asset/page.html");
    setContentView(browser);
    WebSettings ws = browser.getSettings();
    ws.setJavaScriptEnabled(true);
    browser.addJavascriptInterface(new Object()
    {
        @JavascriptInterface           // For API 17+
        public void performClick(String strl)
        {

            Toast.makeText (MainActivity.this, strl, Toast.LENGTH_SHORT).show();

        }
    }, "ok");

page.html файл

<html>
<body>

    First name: <input type="text" name="fname" id="txtfname"><br>
    Last name: <input type="text" name="lname" id="txtlname"><br>

    <script>
    function getValues() {
    document.getElementById("btnOK").value = document.getElementById("txtfname").value+" "+document.getElementById("txtlname").value;
    }
    </script>

    <button type="button" value="" id="btnOK" onclick="getValues();ok.performClick(this.value);">OK</button>
</body>
</html>

4
задан pnuts 12 November 2015 в 03:21
поделиться

2 ответа

Вы можете сделать это с помощью vba, создав определенную пользователем функцию в модуле:

Public Function applyFunction(functionName As Range, argument As Range) As Variant
    applyFunction = Evaluate(functionName & "(" & argument.Address & ")")
End Function

Если вы положите SUM в A1 и 1, 2, 3 в B1, B2, B3 , =applyFunction(A1,B1:B3) вернет 6. Это эквивалентно вызову =SUM(B1:B3).

EDIT

Если вы действительно не хотите использовать VBA, вы можете создать имя (вставить name in excel 2003 Я думаю, Define Name в Excel 2010):

  • Определите новое имя (допустим, eval1)
  • в области относится к области, введите =EVALUATE(A1&"(B1:B3)"), где A1 содержит SUM и B1: B3 - это диапазон с номерами
  • в пустой ячейке, тип =eval1 и он должен возвращать результат

Но этот подход менее гибкий.

5
ответ дан assylias 15 August 2018 в 23:51
поделиться
  • 1
    Очень приятно, асилия! Вы избили меня до удара с помощью функции VBA :) – Joseph Serido 24 April 2012 в 18:27
  • 2
    Благодаря! Есть ли способ сделать это без использования функции VBA? Я хотел бы избежать этого, если это возможно. – 9a3eedi 24 April 2012 в 18:31
  • 3
    @ 9a3eedi Я не думаю, что есть встроенная функция, которая делает это. Может быть, кто-то другой. Любые конкретные причины, по которым вы не хотите использовать VBA? – assylias 24 April 2012 в 18:37
  • 4
    @assylias Этот вопрос для друга. Я не думаю, что он ничего не знает о VBA. Думаю, мне просто нужно научить его, не должно быть слишком сложно. – 9a3eedi 24 April 2012 в 18:39
  • 5
    В этом случае это довольно сложно: откройте редактор макросов, создайте новый модуль, скопируйте код, и все готово. Вы можете найти множество руководств по Google, если это необходимо. Смотрите мои правки для решения без VBA. – assylias 24 April 2012 в 18:46

Если вы хотите использовать формулу вместо этого, вы можете использовать функцию SUBTOTAL (). Тем не менее, он немного ограничен.

Проверьте изображение. Он использует ссылку на номер функции для промежуточного итога. Вы можете развернуть это, создав функцию vlookup, если вы хотите использовать имя функции, но вы также должны предоставить способ определить использование регулярных чисел функций или значений типа 101, которые игнорируют скрытые значения в диапазоне данных .

Проверьте эту ссылку для получения дополнительной информации: http://office.microsoft.com/en-us/excel-help/subtotal-function-HP010062463.aspx

enter image description here [/g1]

1
ответ дан Joseph Serido 15 August 2018 в 23:51
поделиться
  • 1
    Не уверен, почему это было приостановлено - это может быть разумный подход в зависимости от требований OP. – assylias 24 April 2012 в 18:49
  • 2
    Я понятия не имею, почему я тоже занял второе место. Я думал, что это полезно. Это похоже на второй раз подряд. Заставляет меня больше ничего не писать: P – Joseph Serido 24 April 2012 в 18:52
  • 3
    Кто-то может подумать, что это лишь частичный ответ, поскольку он не охватывает другие функции, но я не думаю, что он заслуживает нисходящего движения +. Хорошая практика для downvoters оставить комментарий, чтобы ответы можно было удалить, если они действительно ошибочны или улучшены, если они частично ошибочны. Продолжайте публикацию и не забывайте, что нижний предел равен -2 по сравнению с повышением +10;) – assylias 24 April 2012 в 18:55
  • 4
    Спасибо за поддержку, assylias! Я все еще изучаю этикет здесь, так что ваши комментарии очень помогают мне. Я буду держать на нем :) – Joseph Serido 24 April 2012 в 18:59
Другие вопросы по тегам:

Похожие вопросы: