Stergere celule dupa un anumit criteriu

zvonacfirst
Mesaje: 85
Membru din: Mie Feb 19, 2014 10:41 pm

Stergere celule dupa un anumit criteriu

Mesaj de zvonacfirst » Dum Iul 29, 2018 2:55 pm

Am un fisier Sursa si un fisier Test.
In fisierul Test am introdus un cod care importa in coloana A din Test valorile (numere formate din cate opt cifre) din coloana A din Sursa.
Ce vreau sa se intample: daca prima cifra din seria de opt cifre din fiecare celula nu este 9, celula sa fie stearsa.
Treaba este ca la o rulare codul nu sterge toate celulele care ma intereseaza. Daca rulez codul de stergere de mai multe ori ajung la rezultatul dorit.

Cod: Selectaţi tot

Sub ImportRange()

'Import Range A2:A65536 din fisierul Sursa

Dim customerBook As Workbook
Dim filter As String
Dim caption As String
Dim customerFilename As String
Dim customerWorkbook As Workbook
Dim targetWorkbook As Workbook

Set targetWorkbook = Application.ActiveWorkbook

filter = "Text files (*.xlsx),*.xlsx"
caption = "Please Select an input file "
customerFilename = Application.GetOpenFilename(filter, , caption)

On Error Resume Next

Set customerWorkbook = Application.Workbooks.Open(customerFilename)

Dim targetSheet As Worksheet
Set targetSheet = targetWorkbook.Worksheets(1)
Dim sourceSheet As Worksheet
Set sourceSheet = customerWorkbook.Worksheets(1)

targetSheet.Range("A2:A65536").Value = sourceSheet.Range("A2:A65536").Value

customerWorkbook.Close



' Stergele celule CARE NU INCEP CU 9

Dim rng As Range, cell As Range

Set rng = Range("A2:A65536")
For Each cell In rng
If Not cell.Value = "" Then

If Not Left(cell, 1) = "9" Then
cell.Delete
End If
End If

Next cell

End Sub

Eu am incercat sa import intregul range A-A din Sursa si apoi sa sterg celulele ale caror valoare nu incepe cu 9. Pot fi importate doar celulele care ma intereseaza?
Multumesc.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

csaba1960
Moderator
Moderator
Mesaje: 161
Membru din: Mie Feb 02, 2011 4:05 pm
Localitate: Cluj-Napoca

Re: Stergere celule dupa un anumit criteriu

Mesaj de csaba1960 » Lun Iul 30, 2018 6:59 am

Buna
Am modificat partea a doua a codului

Cod: Selectaţi tot

' Stergele celule CARE NU INCEP CU 9
Dim i As Integer, n As Integer
n = Cells(Rows.Count, "A").End(xlUp).Row

For i = n To 1 Step -1
    If Not Left(Cells(i, 1), 1) = "9" Then Cells(i, 1).Delete
Next
Daca aplicatia permite si o eventuala sortare, timpul de raspuns ar fi mai bun.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Scrie răspuns

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”