редактирование значений массива VBA - с использованием Instr & Split - дата выхода эксцентриситетов - PullRequest
0 голосов
/ 26 июня 2019

Имейте 2d массив, нужно искать в одном из столбцов, находя строку и удаляя все после нее.

У меня есть список дат, но формат, в котором он находится в данный момент, имеет длинное значение Time после даты, заканчивающейся в 2019. Я хотел бы найти и заменить 2019 + время только 2019.

Редактировать код

Дата не сохраняется как дата, для всех намерений и целей это строка, которая выглядит примерно как "**** #### 2019 ###### "и я просто ищу способ удалить все после значения (2019).Прямо сейчас, он проходит через все это красиво проверяет значение массива по значению, но на самом деле ничего не меняет. Edit2 Найдено работоспособное решение с использованием функций Instr и Split.НО закралась самая странная ошибка, некоторые даты в debug.print выглядят нормально, например: 06.11.2009 НО после печати в диапазоне 06/11/2019 13/06/2019 13/06/2019 Даже если формат места назначенияпредварительно определено

Public Sub PrintArray (данные как вариант, Cl как диапазон) Cl.Resize (UBound (Data, 1), UBound (Data, 2)) = конец данных Sub Private Private Sub Test ()

Dim Name_col As Integer
Dim Date_col As Integer
Dim Hours_col As Integer
Dim Department_col As Integer
Dim Data_row As Integer

Name_col = 1
Date_col = 2
Hours_col = 3
Department_col = 4
Data_row = 2

Dim i As Integer
Dim zom As Integer

Dim DirArray As Variant
Dim col As Integer

Dim LString As String
Dim LArray() As String

zom = 0
i = 2
col = 2


Dim X As Integer
Application.ScreenUpdating = False

Do While Sheets("Sheet2").Cells(i, 1).Value <> ""
    i = i + 1
    zom = zom + 1
Loop
  Application.ScreenUpdating = True



NumberOfZombies = zom

Debug.Print "Number of zombies" & NumberOfZombies
Worksheets("Sheet2").Activate
DirArray = Sheets("Sheet2").Range(Cells(Data_row, Name_col), Cells(zom, Department_col)).Value


For rw = LBound(DirArray) To UBound(DirArray)
    For col = LBound(DirArray) To UBound(DirArray, 2)


     LString = DirArray(rw, col)
     If InStr(LString, "2019") > 0 Then
     LArray = Split(LString)
     Debug.Print LArray(0)
     DirArray(rw, col) = LArray(0)
     End If
     Debug.Print DirArray(rw, col)
    Next
Next

PrintArray DirArray, Sheets("Sheet3").[A1]

End Sub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...