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

383
SinTan1729

У меня есть таблица MS Excel 2013, в которой у меня есть список людей, посещающих конференцию, их адрес, номер телефона и т. Д. На разных вкладках. Теперь меня попросили создать список участников с разделителями табуляции для брошюры. Есть ли способ, который может сделать это, не заставляя меня перепечатывать / копировать-вставлять каждую строку данных данных? Мне нужен только столбец имени. Я хочу подготовить брошюру по MS Publisher 2013. Будем благодарны за любую помощь.

1
Открытая функция get_list (rng As Range) As String: Dim str As String, i As Long: i = 1: Пока Len (rng (i) .Value): str = str & "," & rng (i) .Value : i = i + 1: Wend: get_list = Mid (str, 2): End Function`: D Dirk Reichel 8 лет назад 1
@DirkReichel Можете ли вы сказать мне, что это за язык и как его реализовать в электронной таблице? SinTan1729 8 лет назад 0
Это vba ... если вы перейдете в модуль vba, нажав alt + f11, а затем вставите модуль, вы можете просто скопировать / вставить код в него. Затем в свой лист вставьте `= get_list (A: A)` (или в любой диапазон, в котором находятся ваши имена), и он выведет разделенный `,` список всех значений ячеек в данном диапазоне (остановится на первой пустой ячейке) ... извините, но я спешил и просто по телефону, таким образом, нет большого ответа с объяснением: P Dirk Reichel 8 лет назад 1
Тем не менее, вам нужно изменить `,` на `vbTab`. Однако вы не можете устанавливать вкладки в ячейке, так как это не будет работать так, как вам нужно: P Dirk Reichel 8 лет назад 1
@DirkReichel Спасибо. Я с нетерпением жду изучения VBA. SinTan1729 8 лет назад 0

2 ответа на вопрос

1
Pimp Juice IT

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

Я попросил создать список участников с разделителями табуляции для брошюры. Есть ли способ, который может сделать это, не заставляя меня перепечатывать / копировать-вставлять каждую строку данных данных? Мне нужен только столбец имени.

Вот шаги, чтобы сделать это вручную и быстро с помощью Notepad ++ на тот случай, если вам нужен ручной способ выполнить это легко без кода; к тому же, у вас есть вопрос text.

  1. Откройте таблицу Excel со столбцом, из которого вы хотите получить значения данных, например столбец имени.

  2. Щелкните по этому столбцу, чтобы выделить все значения, а затем нажмите Ctrl+ C(или щелкните правой кнопкой мыши и выберите Copy).

  3. Откройте «Блокнот ++» и новый пустой документ, а затем нажмите « CtrlV(или щелкните правой кнопкой мыши и выберите Paste), чтобы вставить значения только что скопированного столбца.

  4. В Notepad ++ со вставленными значениями данных нажмите Ctrl+, Aчтобы выбрать все, что вы вставили, поднимитесь и выберите Editвыберите Line Operations, а затем выберитеRemove Empty Lines (Containing Blank characters)

  5. Из Блокнота ++ со значениями данных, все еще выделенными, поднимитесь и выберите Editвыберите, Blank Operationsа затем выберитеTrim Leading and Trailing Space

  6. Из Notepad ++ со всеми выделенными значениями данных нажмите Ctrl+, Hперейдите на Replaceвкладку, введите значения и убедитесь, что параметры выбраны так, как показано ниже. Нажмите эту Replace Allопцию, и на вкладке должны появиться все ваши значения данных.

  7. Оттуда вы можете сохранить вновь отформатированные значения в виде нового текстового документа или скопировать и вставить в этом формате (с разделителями табуляции) в другие приложения и т. Д. При необходимости, если это применимо.

Пожалуйста, обратите внимание, что я проверил это и подтвердил, что он работает как положено, а затем повернул обратно и импортировал его в Excel как разделитель табуляции, и все выглядит как разделитель табуляции и импортируется правильно.


Скриншот

enter image description here

Источник: Блокнот ++ Регулярные выражения

\ п

  • Контрольный символ НЧ 0x0A (перевод строки). Это обычный конец строки в системах Unix.

  • Контрольный символ CR 0x0D (возврат каретки). Это часть конца строки строки DOS / Windows CR-LF, которая была символом EOL на Mac 9 и более ранних версиях. OSX и более поздние версии используют \ n.

\ т

  • Управляющий символ TAB 0x09 (вкладка или жесткая вкладка, горизонтальная вкладка).

Дополнительное примечание

В Notepad ++ также есть функция Ctrl+ Aи Ctrl+, Jно она не добавляет табуляцию в качестве разделителя, а скорее пробелы. Я не уверен, что ваш столбец «name» - это имя и фамилия, или только одно имя, которое вы можете разделить пробелом, если вам это нужно, и это работает в вашем случае.

Да уж. Он содержит как имена, так и фамилии. И ваш процесс сработал. Хотя для моей цели я обнаружил, что добавление нескольких пробелов лучше, чем табуляции, так как мне нужен равномерный интервал. Я помогаю неправительственной организации, и это была работа в последнюю минуту. Спасибо за вашу помощь. Также я замечаю некоторый код в комментариях. Подскажите, пожалуйста, что это за язык и как им пользоваться? SinTan1729 8 лет назад 0
@SayantanSantra Я рад, что помог решить вашу проблему для вашей насущной необходимости. Спасибо за вопрос! Код в приведенном выше комментарии кем-то еще, возможно, VB или VBA. Это не отформатировано должным образом, потому что это в комментарии, но VB из того, что я могу сказать. Pimp Juice IT 8 лет назад 1
Да уж. Благодарю. Я знаю с ++, но не VB или VBA. Я с нетерпением жду, чтобы узнать это. SinTan1729 8 лет назад 0
Вы также «можете» перенести его в одну строку и затем сохранить как разделенный табуляцией `csv` Dirk Reichel 8 лет назад 0
1
Dirk Reichel

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

Чтобы показать правильный способ сделать это с помощью VBA (и сделать его доступным для других приложений), вы можете использовать этот скрипт:

Сначала откройте окно VBA через Alt+ F11. Затем «Вставить» и «Модуль». Вы можете просто скопировать / вставить код там

Option Explicit Sub Put_All_Names_to_Clipboard() Dim Name_In_Cell As Variant, Name_List As String For Each Name_In_Cell In Selection.Value If Len(Name_In_Cell) = 0 Then Exit For ElseIf Len(Name_List) Then Name_List = Name_List & vbTab & Name_In_Cell Else Name_List = Name_In_Cell End If Next Dim Object_For_Clipboard As Object Set Object_For_Clipboard = CreateObject("new:") Object_For_Clipboard.SetText Name_List Object_For_Clipboard.PutInClipboard Set Object_For_Clipboard = Nothing End Sub 

Теперь будет помещен разделенный табуляцией список (текстовая строка) всех выбранных значений вызовов (он останавливается на первой пустой ячейке, таким образом, можно свободно выбирать целый столбец). После того, как макрос выполнен, вы можете просто «вставить» строку куда хотите. Тем не менее, я предлагаю вставить его в нужное место прямо в вашем издательском файле, что сохраняет 1 шаг, а также сохраняет ваш буфер обмена в чистоте для других задач.

Вы можете запустить макрос напрямую, поместив текстовый курсор где-то внутри подпрограммы и нажав F5. Вы также можете назначить макрос кнопке или добавить его на панель инструментов

Последний совет: вы также можете создать макрос непосредственно в MS-Publisher и просто «получить» эту строку из файла Excel. Но это то, что вы можете сделать позже, если почувствуете себя лучше с VBA. :)

Да уж. У меня есть некоторый опыт. Я любитель программирования на С ++. Ваш ответ объясняет довольно хорошо. Но, так как другой ответ был более удобным и удобным для всех. Это помогло мне сделать работу в час нужды. Итак, я принял это вместо. В любом случае, спасибо за отличный ответ. Я постараюсь познакомиться с VBA в ближайшее время. SinTan1729 8 лет назад 0
@SayantanSantra Я не здесь, чтобы получить "очки" или что-то в этом роде. Моя миссия - помочь другим людям стать лучше. И если вы сможете улучшить свои навыки, чем я получил все, что я искал :) Dirk Reichel 8 лет назад 1
В этом я постараюсь убедиться. SinTan1729 8 лет назад 1

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