2016-09-30 2 views
-3

У меня есть вопрос о написании сценариев. Мне нужно экспортировать данные из Excel в определенные места в блокноте. Например,: У меня есть тысяча строк с 4 столбцами A, B, C, D, которые содержат класс, атрибут, слово, слово перевод на английский. Мне нужно, чтобы он был экспортирован в блокнот следующим образом:Script from excel to notepad

(Language, column A value, column B value, column C value). 
    (English, column A value, column B value, column D value). 
later same with the second row and so on... 

Возможно, у вас есть совет? Или я должен делать это с помощью макроса VB?

+0

Есть ли у вас просто сохраняя файл в виде файла с разделителями-запятыми (.csv)? Это сделает все, что вы просите, и без необходимости чего-либо вне встроенных функций Excel ... Затем вы можете открыть файл в «Блокноте» (или Excel) по своему усмотрению. – Dave

+0

Но мне нужно смешивать столбцы. Из одной строки мне нужно сделать 2rows в текстовом файле, один со значением C и другим значением D, а также добавить статическое значение для каждой текстовой строки. – Satnam

+0

Непонятно, что вы просите. Можете ли вы изменить свой вопрос, чтобы показать примеры ввода, а также желаемый результат? – Dave

ответ

0

Думаю, я понимаю, к чему вы клоните. Я бы сделал это в макросе VB. Есть много способов сделать это, но я думаю, что я чухи по списку с чем-то вроде кода ниже (в зависимости от вашей заявленной требуемой мощности), а затем сохранить Лист2 как CSV файл:

Sub Filemaker() 

    ' Start on top of Sheet1 - I'm assuming you have a blank Sheet2 at the ready in the same workbook 
    Range("A1").Select 

    Do 
    ValueA = ActiveCell 
    ValueB = ActiveCell.Offset(0, 1) 
    ValueC = ActiveCell.Offset(0, 2) 
    ValueD = ActiveCell.Offset(0, 3) 

    Sheets("Ark2").Select ' We move over to the other sheet. Again, make sure this starts on top of the sheet 
    ActiveCell = "Language" '' Start dishing out the data values: 
    ActiveCell.Offset(0, 1) = ValueA 
    ActiveCell.Offset(0, 2) = ValueB 
    ActiveCell.Offset(0, 3) = ValueC 
    ActiveCell.Offset(1, 0).Select '' Putting most of the same values in a row number two, am I getting this right? 
    ActiveCell = "English" 
    ActiveCell.Offset(0, 1) = ValueA 
    ActiveCell.Offset(0, 2) = ValueB 
    ActiveCell.Offset(0, 3) = ValueD 
    ActiveCell.Offset(1, 0).Select '' And then move down one more row to receive next set of values? 

    ValueA = ValueB = ValueC = ValueD = Null ' Empty values before next round 
    Sheets("Ark1").Select ' We move back to the first sheet, prearing to take on next row 
    ActiveCell.Offset(1, 0).Select '' And now we should be ready 
    Loop While ActiveCell <> "" 

End Sub