Замена чисел в каждом столбце на подстроку заголовка каждого столбца

Используя Excel, я пытаюсь выполнить следующее:

Пример до и после
Замена чисел в каждом столбце на подстроку заголовка каждого столбца

Мне нужно преобразовать все единицы в соответствующее название страны каждого столбца. С небольшим набором данных, как в примере выше, легко сделать это вручную, но не так просто, когда у меня 196 столбцов x 2 набора данных. Любые предложения будут высоко ценится!

Если вы хотите, чтобы он был на месте, формулы этого не сделают.

Scott Craner 09.08.2018 21:14
stackoverflow.com/questions/7293461/… Попробуйте использовать это вместе с циклом для просмотра заголовков столбцов, чтобы найти название страны, а затем вы можете найти / заменить единицы на указанное название страны.
Brent 09.08.2018 21:45

«Если вы хотите, чтобы это было на месте, формулы этого не сделают» @Scott Craner Правильно. Формула не может этого сделать. Но пользовательский числовой формат может!

ProfoundlyOblivious 10.08.2018 03:48

@ProfoundlyOblivious Меня бы заинтересовал пользовательский формат, который будет делать то, что хотят параметры

Scott Craner 10.08.2018 04:21

@Scott Craner в отдельных ячейках введите 1 0 R -1, создайте собственный числовой формат. В поле типа клавиша «Лошадь»; «Ричард»; «Осел»; "Пробить" щелкните и вернитесь к своему листу, наблюдая за результатом. Добавлен бонус, это все еще числа, так что Лошадь + Ричард = Осел. Вы также можете использовать условные выражения, такие как [> = 6] "Sallie" К сожалению, Салли сказала, что этот метод ограничивает вывод до 4 вариантов, но вы можете использовать настраиваемое форматирование, чтобы добавить больше. Просто используйте новый собственный числовой формат вместо традиционного изменения цвета.

ProfoundlyOblivious 10.08.2018 04:53

@ProfoundlyOblivious Я думал, у вас есть один, который можно применить ко всем столбцам. Для каждого столбца потребуется отдельный формат. Я надеялся, что у тебя есть способ поискать

Scott Craner 10.08.2018 15:40

@Scott Craner второй формат не нужен для других столбцов, если используется набор данных в примере. Ограничением является количество доступных вариантов. В примере есть 6 возможных вариантов. Сам числовой формат может обрабатывать максимум 4 варианта, условное форматирование поверх настраиваемого числа может обрабатывать все 6 и может быть установлено для одной ячейки и скопировано в любой диапазон, где это необходимо. Это второстепенный вариант использования с лучшими вариантами, поэтому я упоминаю его только в комментариях. Тем не менее, настраиваемые числа очень полезны, иногда эффективны и заслуживают изучения.

ProfoundlyOblivious 10.08.2018 23:48

Было бы, если бы OP хотел сохранить текущую настройку. @ProfoundlyOblivious Я знаю, как использовать настраиваемое форматирование и делать это регулярно, я просто не мог понять, как вы могли бы использовать его с текущим форматом в виде единого кода.

Scott Craner 10.08.2018 23:51

@Scott Craner Верно, это не поиск. Цитаты используются, потому что это поиск, но не тот тип, который обычно используется в Excel. Еще один момент, который следует учитывать, заключается в том, что OP использовал целое число в качестве флага, поэтому мы не можем предполагать, что математика не выполняется, если явно не указано иное. Используя только 4 варианта, у нас будет одно положительное и одно отрицательное целое число, ноль и нечисловой текстовый символ, а с 6 значениями вы вводите еще два неравных целых числа. Любая математика теперь требует ненужных сложностей. Уверяю вас, я бы использовал раздел ответов, если бы подумал, что это хорошее решение вопроса OP.

ProfoundlyOblivious 11.08.2018 00:24

@ProfoundlyOblivious, в конце концов, я надеялся узнать что-то новое. Спасибо за обсуждение.

Scott Craner 11.08.2018 00:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
10
49
2

Ответы 2

Дублируйте лист и удалите все значения, кроме заголовка, на втором листе. Поместите следующую формулу в каждую соответствующую ячейку, кроме строки заголовка на втором листе.

=IF(INDIRECT(ADDRESS(ROW(),COLUMN(),1,1,"Sheet1"),TRUE)=1,
    MID(INDIRECT(ADDRESS(1,COLUMN())),
        FIND("[",INDIRECT(ADDRESS(1,COLUMN())))+1,
        FIND("]",INDIRECT(ADDRESS(1,COLUMN())))-
            FIND("[",INDIRECT(ADDRESS(1,COLUMN())))-1),"")

Затем вы можете скопировать соответствующие ячейки второго листа. Прошлые значения в первый лист. Готово.

{Вы захотите удалить из формулы символы возврата каретки. Кроме того, вы можете удалить второй лист, чтобы скрыть магию. :-)}

Если вы хотите использовать vba вместо формулы, я думаю, это сработает для вас. Он ищет непустые ячейки в "A:F", и для этих ячеек он захватывает имя внутри [...].

Sub AdjustName()

    Dim cell As Range
    For Each cell In Range("A2:F" & LastRowInRange_Find(Range("A:F")))
        If Len(cell.Value2) > 0 Then
            With Cells(1, cell.Column)
                cell.Value2 = Mid(.Value2, InStr(.Value2, "[") + 1, Len(.Value2) - 1 - InStr(.Value2, "["))
            End With
        End If
    Next cell

End Sub


Function LastRowInRange_Find(ByVal rng As Range) As Long

    'searches range from bottom up looking for "*" (anything)
    Dim rngFind As Range
    Set rngFind = rng.Find( _
                            What: = "*", _
                            After:=Cells(rng.row, rng.Column), _
                            LookAt:=xlWhole, _
                            LookIn:=xlValues, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious)

    If Not rngFind Is Nothing Then
        LastRowInRange_Find = rngFind.row
    Else
        LastRowInRange_Find = rng.row
    End If

End Function

Другие вопросы по теме