2016-08-11 7 views
-3

нам нужно преобразовать следующим образом (который на самом деле имеет 218,000 строк):Преобразование Excel, разделенные запятой ячейки в строки, включая значения столбцов B

keyword    businessId 

here,are,keywords 459 
more,keywords  460 

В этом примере ниже:

keyword    businessId 

here     459 
are     459 
keywords    459 
more     460 
keywords    460 

и т.д. и т.п. для 218 000 строк этих данных.

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

+1

Вы предпринимали какие-либо попытки сделать это самостоятельно или просто после бесплатного консультирования по ИТ? – Liam

+0

Посмотрите на использование 'For Loop' в сочетании с функцией« Split ». См. [Здесь] (https://msdn.microsoft.com/en-us/library/5z06z1kb.aspx) для 'For Loops' и [здесь] (https://msdn.microsoft.com/en-us/library /6x627e5f(v=vs.90).aspx) для функций 'Split'. – Jordan

+0

@ Liam Да, я пробовал безумное количество способов решить эту проблему, но я остаюсь полагаю, что мне нужно либо использовать Makro/Macro, либо реальный скрипт, чтобы это произошло. –

ответ

0

Excel, вероятно, упадет после попытки, так как он имеет ограничение чуть более 1M строк. Таким образом, либо лист будет нуждаться в разделении на более мелкие куски, по одному на лист, чтобы предотвратить это, или подумайте о написании короткого сценария на выбранном вами языке для потоковой передачи ввода в новый csv. C# еу код следующим образом:

while(!eof) 
{ 
    string line = inFile.readline(); 
    //assumes tab delimited between keyword/business id, but can be reworked for comma delimited 
    string[] lineParts = line.split('\t'); 
    string[] keywords = lineParts.split(','); 
    int busId = Integer.Parseint(lineParts[1]); 
    for(string keyword : keywords) 
    { 
     outFile.writeLine(keyword + "," + busId); 
    } 
} 

или что-то подобное - возможно, с некоторой попыткой/отлов необходим в случае возникновения ошибок при разборе.

+0

Извините, что мне делать здесь? Сохраните мой файл как .csv, а затем запустите этот скрипт в редакторе Excel Macro? –

+0

Excel не может создать таблицу с> 1M (ish) строками. В VBA вам придется перебирать строки, отслеживать, где вы находитесь на выходе, а затем запускать новый лист каждый раз, когда вы приближаетесь к пределу. В качестве альтернативы, перейдите на другой язык и создайте парсер, который может справиться - я дал псевдокод C#, который вам нужно будет построить в exe и запустить командную строку – JetSetJim

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^