#excel #vba
Вопрос:
Мне нужна некоторая помощь в создании кода для разделения 80 тыс. строк данных на блоки по 999. У меня есть набор данных, который содержит более 80 тысяч строк. Мне нужен только столбец A, но мне нужно разделить 80 тысяч строк столбца a на куски и сохранить в файл txt в блокноте. Есть ли способ выбрать a1:a999, скопировать и вставить в этот файл txt, затем вернуться в excel и выбрать a1000:a1999, снова выбрать и скопировать в файл txt, затем a2000:a9999, a3000:a3999 и так далее, пока у меня не будет x количество файлов txt.
Электронные таблицы уже существуют проблема, о которой я говорю здесь, относится к 1 году, у меня есть электронные таблицы еще на 5 лет, все из которых содержат более 80 строк.
Результат, который я ищу, состоит в том, чтобы сократить время ручного копирования данных в файл txt. Мне нужно это сделать, так как коллега использует файл txt для ввода данных в запрос в SQL для удаления данных из базы данных. Мне сказали, что конкретный запрос ограничил число 999
Любая помощь будет очень признательна
Большое Спасибо, Тед
Комментарии:
1.
a1000:a1999
составляет 1000 строк.
Ответ №1:
Это может быть достигнуто путем циклического перебора каждой строки группами по 999 строк.
Результат:
Код:
Sub RangeToTxt()
Dim FilePath As String, ClData As String
Dim frow As Long, lrow As Long
Dim i As Long, j As Long, k As Long
frow = 1
lrow = Cells(Rows.Count, "A").End(xlUp).Row 'Find last row in Sheet1
FilePath = "G:Till" 'Set path to txt files
k = 1 'Row to start from
For i = frow To lrow Step 999 'loop from first to last row. For every loop, jump 999 rows
Open FilePath amp; k amp; ".txt" For Output As #1 'Set file
For j = 1 To 999 'Loop through rows
If Cells(i j, "A") = "" Then Exit For
ClData = ClData amp; Cells(i j, "A") 'Append to data
If j <> 999 Then 'If last row then skip extra line
ClData = ClData amp; vbNewLine
Else
ClData = ClData
End If
Next j
Print #1, ClData 'Write to txt file
Close #1 'Close txt file
k = k 1 'Add 1 to txt file name
ClData = "" 'Clean data
Next i 'Next group
MsgBox ("Done")
End Sub
Комментарии:
1. Отлично делает именно то, что мне нужно. Спасибо
2. Не стесняйтесь отметить ответ как принятый, нажав на серую галочку под кнопками голосования :). Прекрасно, что это помогло тебе. Возможно, потребуется небольшая корректировка, чтобы соответствовать вашим потребностям на 100% :).