Извлечение подстроки из строки произвольной длины

У меня только волосы более 30 000 tweets . У меня есть одна колонка с фактическим tweet . Есть две вещи, которые я хотел бы выполнить с этой колонкой.

Сначала здесь приведен фрагмент данных образца:

 RT @Just_Sports: Cool page for fans of early pro #baseball. https://t.co/QCMYFQNSq8 #mlb #vintage #Chicago #Detroit #Boston #Brooklyn #Phil… @brettjuliano you already know #unity #newengland #hiphop #boston #watertown #network 

У меня есть столбец, который использует следующую формулу, чтобы узнать, начинается ли сообщение с RT означает re-tweet . Он возвращает 1 для да и 0 для нет.

То, что я хотел бы сделать, – создать формулу в двух столбцах. Тот, который получит имя пользователя, если столбец RT имеет значение 1, а во втором столбце – имя пользователя, если столбец RT имеет значение 0. Поскольку имена пользователей произвольной длины, я не уверен, как это сделать.

пример

 RT @Just_Sports: | 1 | @Just_Sports | 0 @brettjuliano | 0 | | @brettjuliano 

Взгляните на функцию FIND Excel. Вы можете использовать это, чтобы идентифицировать позицию @ , а затем использовать указанный разделитель, соответствующий концу имени пользователя:

 =MID(A1, FIND("@",A1), FIND(":",A1,FIND("@",A1)) - FIND("@",A1)) 

Где A1 – ячейка, содержащая твит, а ":" – ваш разделитель.


Вы можете использовать ту же функцию, чтобы проверить наличие идентификатора "RT" .

 =FIND("RT",A1)>0 

Возвращает TRUE если найдено "RT" . Вы можете рассмотреть поиск " RT " (пробелы) или некоторые другие варианты, так как нет стандарта для использования этого в твиттере:

 =OR(FIND("RT",A1)>0,FIND(" RT",A1)>0,FIND("RT ",A1)>0, FIND(" RT ",A1)>0) 

Но остерегайтесь ложных срабатываний: ART , START , ARTOO и т. Д.

Кроме того, ваш "RT" может быть нижним / верхним / смешанным регистром, и в этом случае вы хотите нормализовать этот поиск:

 =OR(FIND("RT",UPPER(A1))>0,FIND(" RT",UPPER(A1))>0,FIND("RT ",UPPER(A1))>0, FIND(" RT ",UPPER(A1))>0) 

Моя проверка OR отличается от проверки 0/1 которую вы уже имеете, поэтому вы можете добавить IF к этому, чтобы преобразовать в 0/1 мере необходимости:

 =IF(OR(FIND("RT",A1)>0,FIND(" RT",A1)>0,FIND("RT ",A1)>0, FIND(" RT ",A1)>0),1,0) 

Как только вы узнаете, что у вас есть проверка RT, и ваш второй столбец заполнен правильно, вы можете добавить к моей исходной формуле:

Случай для 1 во 2-й колонке:

 =IF(B1=1,MID(A1, FIND("@",A1), FIND(":",A1,FIND("@",A1)) - FIND("@",A1)),"") 

Случай для 0 в 2-й колонке:

 =IF(B1=0,MID(A1, FIND("@",A1), FIND(":",A1,FIND("@",A1)) - FIND("@",A1)),"") 
  • Вложенные vlookups и соответствие индексов для нескольких условий внутри ячейки
  • Добавить или добавить к массиву без VBA / UDF
  • Как динамически вычислять значения из таблицы Excel
  • Ошибка VBA 80004005 при изменении региональных настроек
  • Экспорт данных из SQL Server 2014 в Excel
  • Excel Macro - удаление или добавление диагональных границ
  • Макрос VBA на нескольких листах
  • MS Excel: доля диапазона дат в течение другого периода
  • VBA EXCEL- Сравнение элемента списка с ячейкой (строка)
  • Excel пропускает пустые или 0-значные ячейки
  • Формула, которая будет повторять число Х раз и увеличиваться на счетчик
  • Давайте будем гением компьютера.