Я переделываю макрос, работающий с длинными целыми числами, которые нельзя привести в научную нотацию (например, номера продуктов). В обычном мире я бы просто превратил их в строку, но Excel, похоже, все еще видит строку чисел в виде числа, даже если классифицируется как текст.
По этой причине я должен добавить апостроф ко всему столбцу, прежде чем что-либо менять с помощью следующего кода:
Function CleanColumn(Col As String, ws As Worksheet, Optional wb As Workbook)
If wb Is Nothing Then Set wb = ThisWorkbook
With ws
arr = .Range(.Cells(2, Col), .Cells(.Rows.Count, Col).End(xlUp)).Value2
For i = LBound(arr, 1) To UBound(arr, 1)
arr(i, 1) = Chr(39) & Replace(arr(i, 1), Chr(45), vbNullString)
Next i
.Cells(2, Col).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
End With
End Function
Это работает хорошо, однако теперь мне нужно взять набор данных и разделить его на отдельные таблицы на основе значения одного столбца. Для этого я использовал следующее:
Function CopyByCriteria(Criteria As String, FilterRange As Range, SourceSheet As Worksheet, DestinationSheet As Worksheet)
Dim pasteRow As Integer
Dim c As Range
pasteRow = 1
For Each c In FilterRange
If c = Criteria Then
DestinationSheet.Rows(pasteRow) = SourceSheet.Rows(c.Row).Value2
pasteRow = pasteRow + 1
End If
Next c
End Function
Проблема в том, что когда я использую функцию CopyByCriteria, добавленный мною апостроф отсутствует на новом рабочем листе, а цифры попадают в научную нотацию.
Какое решение для этого?