Just nu i M3-nätverket
Gå till innehåll

Sök efter unika värden


Pellestek

Rekommendera Poster

Jag har ett Excelblad där jag vill hitta unika värden i cellen och när jag hittar den, flytta den till annan cell på samma rad..

3-5678-45

2-5678-2

1-5678-89

3-4534-101

osv

1 siffra, bindestreck, 4 siffror, bindestreck, 1-3 st siffror, alltså det är alltid denna kombination jag söker efter.

Är det någon som kan hjälpa mig?

 

Peter

Länk till kommentar
Dela på andra webbplatser

Inte riktigt med på vad du vill.

 

Är det unika värden per rad och vad är då ett unikt värde? I första raden är 3, 6, 7, 8 och 4 unika i den mån att de bara förekommer en gång? Ska dessa kopierar till en cell?

 

Eller är det unika följd av tal i hela mängden med tal, alla tal i kolumnen? Då finns det verktyg i Excel som löser det enkelt. ta en titt på avancerat filter.

 

Förtydliga och ge exempel på vad du har och vad du vill ha.

Länk till kommentar
Dela på andra webbplatser

Jag vill helt enkelt flytta det numret från kolumn E till kolumn A.

Hittar jag tex 3-4567-6 på E12 ska det flyttas till A12.

 

Det jag vill flytta, är tex 3-5678-4,

Det borde gå att leta om detta, " -****-"

Det är alltid 4 st siffror mellanbindestrecken, vilka som helst.

Om det står tex "Lager 34-2", ska det inte flyttas.

 

Peter

Länk till kommentar
Dela på andra webbplatser

jamen då behöver du inte VBA-kod...

 

=OM((SÖK("-";E1;SÖK("-";E1)+1)-SÖK("-";E1))=5;E1;"")

plockar ut alla tal där det är fyra tecken mellan första och andra bindestrecket. Om detta inte duger kan man lägga på fler villkor.

Bara att kopiera ned utmed din tabell.

Länk till kommentar
Dela på andra webbplatser

Tack det ska jag testa.

 

Vid träff ska jag flytta den till A kolumnen, hur gör jag då?

Kan den skrivas i denna, =OM((SÖK("-";E1;SÖK("-";E1)+1)-SÖK("-";E1))=5;E1;"")?

Peter

Länk till kommentar
Dela på andra webbplatser

Du skriver formeln i A-kolumnen. Formler kan enbart ändra värden i cellen de står i.

 

 

Vill du sedan bli av med formler, bara att kopiera och klistra in enbart värden.

Länk till kommentar
Dela på andra webbplatser

Vilken version av Excel? Filformat tyder på Excel 2003 eller tidigare.

 

Isåfall får du ändar formeln i H7 och nedåt till lite med omständiga

=OM(ÄRFEL(OM((SÖK("-";E7;SÖK("-";E7)+1)-SÖK("-";E7))=5;E7;""));"";OM((SÖK("-";E7;SÖK("-";E7)+1)-SÖK("-";E7))=5;E7;""))

 

Men en helt ny tabell vid sidan av. Där hämtat vi värdena och placerar in dem som du önskar.

 

Som sagt, sedan kan du "låsa" resultatet genom att kopiera och klistra in enbart värden.

Exempel.xlsx

Länk till kommentar
Dela på andra webbplatser

Hej

Tack för hjälpen, men jag får inte ihop det riktigt, jag har inte jobbat nåt med excel.

Jag använder VBA kod i iLogic för att skapa en xls fil av en template (xls) som jag änvänder som mall.

Jag hämtar en stycklista i en ritning och lägger in de värdena i rätt flik i excelfilen.

Eftersom ritnr och fabrikat står på samma rad, så vill jag flytta ritnr till en annan kolumn samtidigt som jag filtrerar det i nummerordning och flyttar upp ritnr. högst upp

i filen innan jag stänger den.

Jag tror att jag kanske gör det lättare med VBA innan jag stänger filen, men jag vet inte hur?

 

Peter

Länk till kommentar
Dela på andra webbplatser

Vilken version av Excel? Filformat tyder på Excel 2003 eller tidigare.

 

Isåfall får du ändar formeln i H7 och nedåt till lite med omständiga

=OM(ÄRFEL(OM((SÖK("-";E7;SÖK("-";E7)+1)-SÖK("-";E7))=5;E7;""));"";OM((SÖK("-";E7;SÖK("-";E7)+1)-SÖK("-";E7))=5;E7;""))

 

Men en helt ny tabell vid sidan av. Där hämtat vi värdena och placerar in dem som du önskar.

 

Som sagt, sedan kan du "låsa" resultatet genom att kopiera och klistra in enbart värden.

 

Jag hade för bråttom, jag lägger in denna i A kolumnen så kopieras ritnr. över till A när det skrivs i E.

Kan man radera ritnr. i E efter kopieringen till A?

 

Peter

Flytta_sedan_delete.xls

Länk till kommentar
Dela på andra webbplatser

För att radera måste du använda VBA. Som sagt, formler kan bara skriva till cellen det står i,.

 

Okej, du har redan VBA-kod som skapar bladet och vill ha lite med som fixar det.

 

Lite kod då...

Sub MyMover()
Dim myRn As Range

Set myRn = Blad1.Range("e2").Resize(Blad1.Cells.SpecialCells(xlCellTypeLastCell).Row - 1)

Dim myCell As Range
Dim i As Integer, j As Integer
For Each myCell In myRn
   	If myCell <> "" Then
       	i = InStr(1, myCell, "-")
       	If i <> 0 Then
           	j = InStr(i + 1, myCell, "-")
           	If j - i = 5 Then
               	myCell.Offset(0, -4) = myCell
               	myCell = ""
           	End If
       	End If
   	End If

Next myCell

End Sub

 

Om många celler, snabba upp det hela genom att inaktivera skärmuppdateringarna.

Application.ScreenUpdating = False

 

samt se till att referenserna är rätt. Det koden skriver över kan inte ångras.

Länk till kommentar
Dela på andra webbplatser

Tack, det fungerar jättebra.

Är det möjligt att sortera ritnumren efter att dom är flyttade( A-Ö i raderna).

Det kanske går att göra innan dom är flyttade, så kolumn E blir sorterad också.

 

Det skulle se bra ut i dokumentet thumbsup.gif

Jag är rätt dålig på detta.

 

Peter

Flyttasedandelete_sorteraRitnr.xlsx

Länk till kommentar
Dela på andra webbplatser

Jag får felmeddelande "9" när jag kör detta.

Beror det på att cellerna är tomma?

 

Sub Sortera()
'
' Sortera Makro
' Sortera
'
' Kortkommando: Ctrl+f
'
   Range("A6:E298").Select
   ActiveWorkbook.Worksheets("Default").Sort.SortFields.Clear
   ActiveWorkbook.Worksheets("Default").Sort.SortFields.Add Key:=Range("A6"), _
       SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   With ActiveWorkbook.Worksheets("Default").Sort
       .SetRange Range("A6:E94")
       .Header = xlNo
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With
   Range("A1").SelectEnd Sub

Länk till kommentar
Dela på andra webbplatser

Sortera, går bra närsom.

 

Varför din gav fel? Vet ej, testade den inte utan städade den först och så då fungerar den mot den bok du bifogade ovan.

 

Fixa referenserna om de inte stämmer. Jag har dessutom gjort cellallockering dynamisk så säga. Borde fungera bra.

 

Sub Sortera()
'
' Sortera Makro
' Sortera
'
' Kortkommando: Ctrl+f
'
With Blad1.Sort
   	.SortFields.Clear
   	.SortFields.Add Key:=Blad1.Range("A1"), _
       	SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   	.SortFields.Add Key:=Blad1.Range("E1"), _
       	SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   	.SetRange Blad1.Range("A1:E1").Resize(Blad1.Cells.SpecialCells(xlCellTypeLastCell).Row)

   	.Header = xlYes
   	.MatchCase = False
   	.Orientation = xlTopToBottom
   	.SortMethod = xlPinYin
   	.Apply
End With

End Sub

Länk till kommentar
Dela på andra webbplatser

Oh, sortera efter del av text. ja då måste du bryta ut den delen (eller vända på den) till en egen kolumn och sortera på denna kolumn.

 

Antar att även detta ska fixas via VBA-kod?

Inget problem

 

Cells(2,1) = Right(Cells(1,1),1)

exempelvis

Länk till kommentar
Dela på andra webbplatser

Du måste givetvis göra denna delning av värden innan du sorterar för att kunna sortera på dem

Dim myCell As Range
On Error Resume Next
For Each myCell In Blad1.Range("a2").Resize(Blad1.Cells.SpecialCells(xlCellTypeLastCell).Row)

If myCell <> "" Then
   	myCell.Offset(0, 2) = Right(myCell, Len(myCell) - InStr(InStr(1, myCell, "-") + 1, myCell, "-"))
End If
Next myCell
On Error GoTo 0

 

Därefter i själva sortering får du även lägga till denna kolumn som nyckel. Vill du ha den som primär nyckel lägger du den först bland nycklarna.

Länk till kommentar
Dela på andra webbplatser

Jag kan inte få till det, jag får den till att flytta över löpnumret från kolumn A till C.

Hur ska jag göra, jag är mycket tacksam för all hjälp.blush.gif

Mvh Peter

 

 

 

Länk till kommentar
Dela på andra webbplatser

Sub SorteraA()
'
' Kortkommando: Ctrl+f

Dim myCell As Range
On Error Resume Next
   	For Each myCell In Blad1.Range("a2").Resize(Blad1.Cells.SpecialCells(xlCellTypeLastCell).Row)

       	If myCell <> "" Then
           	myCell.Offset(0, 2) = Right(myCell, Len(myCell) - InStr(InStr(1, myCell, "-") + 1, myCell, "-"))
       	End If
   	Next myCell
On Error GoTo 0
With Blad1.Sort
   	.SortFields.Clear
   	.SortFields.Add Key:=Blad1.Range("C1"), _
           	SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   	.SortFields.Add Key:=Blad1.Range("A1"), _
           	SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   	.SetRange Blad1.Range("A1:E1").Resize(Blad1.Cells.SpecialCells(xlCellTypeLastCell).Row)

   	.Header = xlYes
   	.MatchCase = False
   	.Orientation = xlTopToBottom
   	.SortMethod = xlPinYin
   	.Apply
End With
End Sub

Kopierar ut text efter bindestreck till C-kolumn.

Använder C-kolumn som primär nyckel och A som sekundär nyckel.

Länk till kommentar
Dela på andra webbplatser

Kanonbra, men talen sorteras efter första siffran efter bindestrecket.

 

nr1. 3-3000-1

nr2. 3-3000-120

nr3. 3-3000-25

nr4. 3-3000-3

 

 

nr1. 3-3000-1

nr2. 3-3000-3

nr3. 3-3000-25

nr4. 3-3000-120

 

Mvh Peter

Länk till kommentar
Dela på andra webbplatser

var det inte det du ville? Ska hela talserien speglas?

Ska 120 bli 021?

 

Notera att då får vi ett annat problem, Excel lagrar inte nollan ifall vi sparar det som tal och sparar vi talen som text blir sorteringen annorlunda.

Länk till kommentar
Dela på andra webbplatser

Det är dom sista siffrorna som ska sorteras i nummerföljd.

 

Jag lägger in dessa ritnr. i excelfilen (Template) med hjälp av iLogic, problemet är att dessa inte ligger

 

i ordningsföljd, det är sista siffrorna (1-999) som är löpnumret.

 

 

Mvh Peter

3557.xls

Länk till kommentar
Dela på andra webbplatser

men är det inte vad koden gör?

 

Om vi har artiklarna

15-248-15

12-758-6

85-786-8

delar på dem

15-248-15 15

12-758-6 6

85-786-8 7

(Eforum inge bra på tabeller)

 

och sorterar så har vi

12-758-6 6

85-786-8 7

15-248-15 15

 

Är inte det vad du önskar?

Länk till kommentar
Dela på andra webbplatser

Dessa ser ut såhär,

 

3-5678-3

3-5678-65

3-5678-4

4-5678-6

 

 

Siffrorna inom bindestrecken är alltid lika i samma dokument.

den första siffran 3 eller 4 är olika (men ska inte sorteras)

 

De sista siffrorna är löpnumren som raderna ska sorteras efter.

 

3-5678-3

3-5678-4

4-5678-6

3-5678-65

 

 

så jag behöver inte spara de värdena som flyttas ut i F (3557.xls)

Peter

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...