#vba #excel #excel-formula #excel-2013
#vba #excel #excel-формула #excel-2013
Вопрос:
У меня проблема, когда я пытаюсь выполнять ранжирование и ранжирование, в то время как оба возвращают уникальные ранги вместо дубликатов, и все это без сортировки моих данных. Я приведу пример того, что я сейчас получаю ниже. Я бы хотел решить эту проблему в любом случае, будь то VBA или Formula. Однако у меня есть много таблиц данных, в которых в настоящее время используются Sumproducts, и в настоящее время я пытаюсь избежать использования этой функции, поскольку она чрезвычайно обременительна.
Category | Total Value | Rank | Unique ID
lkj | 494.1 | 2 | lkj2
asdf | 679.6 | 1 | asdf1
lkj | 494.1 | 2 | lkj2
tdd | 110.5 | 2 | tdd2
tdd | 120.5 | 1 | tdd1
lkj | 800.5 | 1 | lkj1
A B C D
1 Category | Total Value | Rank | Unique ID
2 FX | 494.1 | 2 | FX2
3 FX | 679.6 | 1 | FX1
4 FX | 494.1 | 2 | FX2
5 FX | 110.5 | 4 | FX4
Итак, в первом примере я пытаюсь выполнить ранжирование. Столбец total value ссылается на таблицу необработанных данных. Я знаю, что могу просто объединить ранг и общее значение в один столбец, но, например, я подумал, что было бы проще объяснить, что я имею в виду, чтобы выложить все.
2-я проблема заключается в том, что в моей 2-й таблице у меня возникают проблемы, когда иногда общие значения будут точно такими же, и мне просто нужно, чтобы один из FX был рангом 3. То, что я сейчас делаю, — это возвращаюсь и вручную настраиваю это, и с большим количеством таблиц данных, где я должен делать ранги, вы можете себе представить, что это может быть очень трудоемким по времени. Совсем не сложно, просто много ручной работы, которую, я чувствую, можно было бы автоматизировать.
Я ни за что на свете не могу придумать, как решить эту проблему ни в функциях, ни в VBA. Единственное, о чем я могу думать, это ранжировать все, а затем сортировать, как показано в примере ниже.
A B C D
1 Category | Total Value | Rank | Unique ID
2 FX | 679.6 | 1 | FX1
3 FX | 494.1 | 2 | FX2
4 FX | 494.1 | 2 | FX2
5 FX | 110.5 | 4 | FX4
Затем найдите формулу или решение vba, где оно смотрит на D2 и говорит, что если вышеуказанная ячейка равна D2, то дайте мне C1 1, в противном случае дайте мне C1. Это будет иметь значение, как только оно зациклится и перейдет к D4, поскольку D3 равно D4. Это решение кажется мне чрезвычайно архаичным, но если нет лучшего способа сделать это за пределами этого, я просто запишу макрос.
Любые идеи приветствуются.
Спасибо,
Ответ №1:
Если вы ищете способ получить уникальные значения из ранга, это сделает следующая функция:
=RANK(B2,$B$2:$B$10) COUNTIF($B$2:B2,B2)-1
Поскольку countif подсчитывает значения только в строках над ним, первый, который он найдет с заданным значением, будет иметь более высокий ранг.
Я не совсем понимаю, что вы говорите о ранге, если это так, я не собираюсь пытаться ответить на это.
Комментарии:
1. Привет, Gtwebb, спасибо за быстрый ответ! К сожалению, этот ответ не помогает, хотя я уже пробовал. одним из решений, которые я нашел, было ваше предложение с небольшим изменением countif, но я тоже попробовал его по-своему, = РАНГ (X7, $ X $ 7: $ X $ 533) COUNTIF(X $ 7: X7, X7) -1 . В конечном итоге проблема, с которой я столкнулся, заключалась в том, что у меня был ранг 103, и был дубликат для ранга 102, но, к сожалению, с помощью этой формулы дубликат ранга 102 был устранен, но теперь у меня 2 ранга 103. Я надеюсь, что это имеет смысл.
2. Ха! Итак, я узнал, почему это не сработало. Похоже, источнику данных просто нужно было округлить числа. Что касается ранга Ifs, я просто имел в виду, что у меня есть связанные теги, которые мне нужно ранжировать. В примере номер один, который я облажался, должно быть 2 lkj и ни одного jk. Я полностью обновил первый пример, и теперь он должен быть более тщательным. Извините за путаницу, я на самом деле дома болен и хотел кое-что сделать.
3. Эй, Pnuts, ты вроде прав. Это была проблема, когда одно из значений считывалось как 15,6, а другое — как . Однако, если вы отформатировали число так, чтобы оно включало достаточное количество нулей справа, я думаю, в конечном итоге было бы что-то, что отличало бы два значения 15,6. Я не стал тратить время на это, так как после 10 нулей справа я понял, что Excel просто знал, и округлил числа. После этого все работало нормально. Есть идеи о том, как ранжировать на основе нескольких критериев?