Найти следующие ненулевые значения в столбце с его подпиской

Утвержденный ответ Джорджа Клагхорна отлично подойдет для простого вставки текста в позицию курсора. Если пользователь выделил текст, и вы хотите, чтобы этот текст был заменен (по умолчанию используется большинство текста), вам нужно внести небольшое изменение при установке переменной «назад».

Кроме того, если вам не нужно поддерживать более старые версии IE, современные версии поддерживают textarea.selectionStart, поэтому вы можете удалить все обнаружение браузера и код, специфичный для IE.

Вот упрощенная версия, которая работает для Chrome и IE11 по крайней мере, и обрабатывает замену выделенного текста.

function insertAtCaret(areaId, text) {
    var txtarea = document.getElementById(areaId);
    var scrollPos = txtarea.scrollTop;
    var caretPos = txtarea.selectionStart;

    var front = (txtarea.value).substring(0, caretPos);
    var back = (txtarea.value).substring(txtarea.selectionEnd, txtarea.value.length);
    txtarea.value = front + text + back;
    caretPos = caretPos + text.length;
    txtarea.selectionStart = caretPos;
    txtarea.selectionEnd = caretPos;
    txtarea.focus();
    txtarea.scrollTop = scrollPos;
}
0
задан PGCodeRider 18 January 2019 в 23:57
поделиться

2 ответа

Это не тривиально. Если вы не можете работать с фильтрацией или программированием, вам следует использовать матричные формулы. Я включил пример с двумя формулами: 1-й в D1: D5, 2-й в F2: G5. Введите их с помощью Ctrl + Shift + Enter. Кроме того, вы должны использовать дополнительный столбец для определения «допустимых» строк. (Вы можете поместить все это в одну формулу, но это будет выглядеть еще сложнее.)

Извините за немецкий Excel. Wennfehler = iferror, kkleinste = small, zeile = row, wenn = if, bereich.verschieben = range.offset.

][2]

][1]

0
ответ дан Wolfgang Jacques 18 January 2019 в 23:57
поделиться

Я быстро пересмотрел вашу структуру данных, чтобы проверить это.

Использование Array Formulas должно дать вам желаемые результаты в текущей структуре вашего рабочего листа:

Для диапазона Loaned in вам нужно, чтобы формула была

[110 ]

Где 8 - ссылка на возвращаемый столбец. Для диапазона справа вы должны использовать ту же формулу, просто отрегулируйте 8 до 9. А для диапазона Loaned Out вам понадобится

=IFERROR(INDIRECT(ADDRESS(SMALL(IF($K$4:$K$23>0,ROW($4:$23),""),ROW(A1)),10)),"")

А для диапазона, расположенного прямо направо, вы снова измените 10 на 11. Опять же, оба они являются формулами массива, поэтому их нужно вводить немного по-разному. См. Ссылку для дальнейшей помощи с формулами массива.

0
ответ дан Tate Garringer 18 January 2019 в 23:57
поделиться
Другие вопросы по тегам:

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