03. oktober 2002 - 11:01Der er
11 kommentarer og 1 løsning
Finde ens data i en kollonne vha. VBA
Nogle der ved hvordan man i Excel kan finde frem til ens værdier i en kollonne og derefter "merge" de ens værdier sammen til et felt. Jeg tror en VBA-kode kan gøre det, men ved ikke hvordan jeg skal gribe det an. Nogle der kan hjælpe?
Sådan ser arket ud nu: 01 Adobe 02 Adobe 03 Adobe 04 Adobe 05 Adobe 06 Microsoft 07 Microsoft 08 Microsoft 09 Microsoft 10 Microsoft 11 Google 12 Netscape 13 Altavista 14 Altavista 15 Altavista
Sådan vil jeg have at det skal se ud: 01 Adobe 02 03 04 05 06 Microsoft 07 08 09 10 11 Google 12 Netscape 13 Altavista 14 15
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg ved godt at man kan gøre det på den måde, men problemet er at dataene hentes ind i Excel vha. VBA-kode fra en database. Kunne man ikke konvertere formlen til VBA?
Du kan fyre denne lille makro af efter importen. Her tror makroen at dine data starter i Sheet1 celle A1 - ret selv på det.
Husk altid at lege på en kopi fil....!
Public Sub RemoveDoubleText() Dim rCell As Range Dim sText As String
sText = "" For Each rCell In Worksheets("Sheet1").Range("A1").CurrentRegion.Columns(2).Cells If rCell.Value = sText Then rCell.Value = "" Else sText = rCell.Value End If Next rCell End Sub
Jeg skal ikke kun have fjernet værdier som forekommer mere end en gang. Det skal også være sådan, at de gentagne værdier splittes til et felt. Sådan noget i retning af
Do While (i = 0) If rCell.Value(Feltet_Ovenover) = (Dette_Felt) Then Felt(Feltet_Ovenover:Dette_Felt).Merge End If Loop
Public Sub RemoveDoubleText() Dim rCell As Range Dim sText As String Dim lRow As Long Dim lMaxRows As Long
sText = "" lMaxRows = ActiveSheet.Range("A1").CurrentRegion.Rows.Count For Each rCell In ActiveSheet.Range("A1").CurrentRegion.Columns(2).Cells If rCell.Value = sText Then With rCell .Value = "" If .Row = lMaxRows Then MergeCells lRow, .Row, .Column End If End With Else With rCell If .Row > 2 Then MergeCells lRow, .Row - 1, .Column End If sText = .Value lRow = .Row End With End If Next rCell
Set rCell = Nothing End Sub
Private Sub MergeCells(ByRef lStartRow As Long, ByRef lEndRow As Long, ByRef lColumn As Long) With ActiveSheet.Range(Cells(lStartRow, lColumn), Cells(lEndRow, lColumn)) .VerticalAlignment = xlTop .MergeCells = True End With End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.