VBA - заполнение ячейки, если соседняя ячейка не пуста

Я создал макрос, который открывает и редактирует книги excel для меня.

во-первых, он добавляет новый столбец A, а затем изменяет заголовок для A1, B1, C1, D1.

после этого я хочу создать какую-то формулу / цикл в VBA, который добавляет фрагмент текста (31/12/2014) в этом случае к каждой ячейке в A, но только если есть текст в соседней ячейке справа RC[1].

кто-нибудь есть идея, как я должен изменить указанный код VBA для донести это до конца?

Не так важно, но я хотел бы, чтобы эта дата была изменена через мой лист excel. Есть ли простой способ сделать это, как когда я это сделал, используя диапазон("E7").Значение (и отредактированное E7). Форматирование отсутствовало во всех моих других книгах.

Sub test()


Dim MyPath          As String
Dim MyFile          As String
Dim Wkb             As Workbook
Dim Cnt             As Long

Application.ScreenUpdating = False

'MyPath = "G:SHAREDStyle ResearchPortfolios - Macro Test"
MyPath = Range("D6").Value

If Right(MyPath, 1) <> "" Then MyPath = MyPath & ""

MyFile = Dir(MyPath & "*.xls")

Cnt = 0
Do While Len(MyFile) > 0
    Cnt = Cnt + 1
    Set Wkb = Workbooks.Open(MyPath & MyFile)
    Wkb.Worksheets("Sheet1").Range("A1").EntireColumn.Insert

'this is the part I'm referring to
    Wkb.Worksheets("Sheet1").Range("A1:A250") = "31/12/2014"
    'Range("D7").Value

    'Wkb.Worksheets("Sheet1").Range("A1").EntireColumn.NumberFormat = "DD/MM/YYYY"
    Wkb.Worksheets("Sheet1").Range("A1") = "Date"
    Wkb.Worksheets("Sheet1").Range("B1") = "Identifier"
    Wkb.Worksheets("Sheet1").Range("C1") = "Name"
    Wkb.Worksheets("Sheet1").Range("D1") = "%"

    Wkb.Close savechanges:=True
    MyFile = Dir
Loop

If Cnt > 0 Then
    MsgBox "Completed...", vbExclamation
Else
    MsgBox "No files were found!", vbExclamation
End If

Application.ScreenUpdating = True

End Sub
19
задан Raystafarian
30.12.2022 12:46 Количество просмотров материала 3657
Распечатать страницу

1 ответ

Это довольно просто, используйте for loop С if состояние, как это -

Sub test()
For Each c In Range("A:A")
 If c <> 0 And c.Offset(, 1) <> 0 Then
     c.Value = 1
 End If
Next
End Sub

вы можете изменить диапазон, чтобы соответствовать вашим данным, или вы можете попытаться получить usedrange. Я не совсем понимаю вторую часть.

0
отвечен Raystafarian 2022-12-31 20:34

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

macros
microsoft-excel
microsoft-excel-2007
microsoft-excel-2010
vba
Вверх