У меня есть электронная таблица, в которую пользователь вводит список точек данных, которые в конечном итоге выводятся на график. Есть 100 строк с самым левым столбцом, содержащим флажок для каждой строки. Я хочу, чтобы пользователь мог отметить 10 из 100 полей и отобразить эти данные на графике в порядке сверху вниз по списку.

Галочки связаны со столбцом, который отображает true или false. В конечном счете у меня будет столбец с 90 «ЛОЖНЫМИ» и 10 «ИСТИННЫМИ» строками. При каждом использовании листа строки, имеющие значение true, могут находиться в разных местах, включая первую строку, содержащую значение true.

Я хочу, чтобы данные из 10 истинных строк были скопированы в таблицу из 10 строк (на том же листе) и нанесены на график.

Я думал нумеровать истинные строки 1-10 сверху вниз, что упростило бы копирование данных в таблицу из 10 строк.

Однако я не могу заставить нумерацию этих «истинных» строк работать каждый раз с разными начальными строками. Самое близкое, что мне удалось - это использовать формулу COUNTIF.

Кто-нибудь может помочь?

2 ответа2

1

Хотя существуют более элегантные решения, формулы несколько сложнее, но это даст вам очень простое решение, которое легко реализовать.

Давайте предположим, что ваши значения TRUE/FALSE (и я предполагаю, что они переводят в 1 и 0 в ваших ячейках) находятся в диапазоне D3:D103, и давайте далее предположим, что текст, связанный с каждым из этих потенциальных 100 TRUE/FALSES, равен в диапазоне E3:E103.

В ячейку C3 поместите следующую формулу и просто скопируйте ее в C103:
=SUM(D$3:D3)

Это даст вам что-то вроде 0,0,0,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3 т.д. Вниз , в зависимости от того, где 1 в столбце D.

(Если у вас нет 1 или 0, и у вас действительно есть значения ИСТИНА / ЛОЖЬ прямо из элемента управления формой, просто используйте =SUMPRODUCT(--(D$3:D3)) вместо этого)

Теперь, скажем, в ячейках J6:J15, поместите значения 1,2,3,4,5,6,7,8,9,10, а затем в ячейку K6 введите следующую формулу и скопируйте в K15:
=VLOOKUP(J6,$C$3:$E$103,3,0)

То, что вы теперь увидите в столбце K, - это связанный текст с каждой из 10 опций, которые были отмечены, в порядке их появления в списке.

Если вы хотите узнать, какое число в списке на самом деле было, то, скажем, в ячейке L6, выведите следующую формулу и скопируйте до L15:
=MATCH(J6,$C$3:$C$103,0)

Если вы хотите узнать фактическую строку, в которой появилась каждая запись, то, скажем, в ячейке M6, выведите следующую формулу и скопируйте ее в M15:
=MATCH(J6,$C$3:$C$103,0)+ROW($C$3)-1

0

Хорошо, мне удалось заставить это работать, это немного запутанно, но это делает работу хорошо. Пришлось увеличить мой диапазон до 150 строк, чтобы охватить данные, которые будут вводиться.

У меня были все мои true/false в столбце I, поэтому в столбце J я поместил номера строк только строк, содержащих true ...

=IF(I7=FALSE, "", ROW())

Затем в столбце K я использовал функцию RANK, чтобы присвоить нужные мне номера 1-10. Нумерация строк будет только увеличиваться по мере продвижения вниз по списку, поэтому функция ранга в порядке убывания работает нормально.

=IF(J7="", "", RANK(J7,$J$7:$J$156, 1))

Затем я смог использовать функцию VLOOKUP, чтобы сопоставить эти 1-10 чисел с данными, которые я хотел извлечь, чтобы заполнить таблицу из 10 строк, которую я имею в другом месте на листе, для построения графика.

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

Большое спасибо за посты, так как это дало мне возможность попробовать другие, что в конечном итоге привело к тому, что все заработало.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .