Gå til innhold

[haster] Sjekke om streng matcher med en annen som SQL LIKE


Anbefalte innlegg

Programmerer i VB.net og looper igjennom en excel-fil.

Si at cellen inneholder:

1-butanol

mens jeg ønsker å få en match på følgende:

1-butanol Butan-1-ol

 

To andre eksempler

Fra excel:

Jern(III)nitrat (9 hydrat)

Må matche:

846000-Jern(III)nitrat

 

Fra excel:

Jern(III)klorid 1000 g

må matche:

Jern(III)klorid

 

Hvordan kan dette gjøres i VB.net?

Kan vel kanskje bruke Range.Find?

Tar i mot alle forslag og løsninger!

 

Kan enten matche filnavn mot excel-verdi (loope igjennom filer) eller matche excel verdi mot filnavn. hva som er enklest..

EDIT:

La til forslag

Endret av Gjest
Lenke til kommentar
Videoannonse
Annonse

Takk for godt forslag, dessverre klarer den ikke å ta alt..

F.eks:

Excel:

Ammoniumkarbonat ren

 

Filnavn:

Ammoniumkarbonat

 

 

EDIT:

Ser nærmere på det...

Endret av Gjest
Lenke til kommentar

Takk for godt forslag, dessverre klarer den ikke å ta alt..

F.eks:

Excel:

Ammoniumkarbonat ren

 

Filnavn:

Ammoniumkarbonat

 

Dim string1 As String
Dim string2 As String
string1 = "Ammoniumkarbonat"
string2 = "Ammoniumkarbonat ren"
if string2.contains(string1) Then
    //Do something
End if

 

Dette burde fungere, men hvis det er omvendt (bytt om string1 og 2), så vil det ikke fungere. Hvis du vil sjekke begge veier må du kanskje gjøre noe slikt..

 

Dim string1 As String
Dim string2 As String
string1 = "Ammoniumkarbonat"
string2 = "Ammoniumkarbonat ren"
if string2.contains(string1) Or string1.contains(string2) Then
 //Do something
End if

Endret av Untouchab1e
Lenke til kommentar

Per nå har jeg følgende kode:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

	oXL = CreateObject("Excel.Application")
	oXL.Visible = False
	oWB = oXL.Workbooks.Open("D:\datablader\Datablad og nummer.xlsx")
	oSheet = oWB.Sheets(1)
	Dim datablader As New List(Of datablad)
	Dim di As New DirectoryInfo("D:\datablader\til-merking")
	Dim fiArr As FileInfo() = di.GetFiles()
	Dim fri As FileInfo
	For Each fri In fiArr
		findCell(fri.Name)
	Next
	oWB.Close()
	oXL.Quit()
End Sub
Public Function findCell(ByVal name As String)
	oRng = oSheet.Range("A2:A200")
	Dim rCell As Excel.Range
	For Each rCell In oRng.Cells
		Dim strNavn As Excel.Range = rCell.Offset(0, 0)
		Dim strNummer As Excel.Range = rCell.Offset(0, 1)
		If (Not (IsNothing(strNavn.Value)) And Not (IsNothing(strNummer.Value))) Then
			If (Not strNavn.Interior.ColorIndex = 35 And Not strNavn.Interior.ColorIndex = 38) Then
				If strNavn.Value.ToString.ToLower.Contains(name.ToLower) And name.ToLower.Contains(strNavn.Value.ToString.ToLower) Then
					Debug.WriteLine(strNavn.Value & " : " & name & " - " & strNummer.Value)
				End If
				'datablader.Add(a)
				'Debug.Print(strNavn.Value & " : " & strNummer.Value & " : " & strNavn.Interior.ColorIndex)
			End If
		End If
	Next rCell
End Function

 

Fungerer ikke så bra gitt..

Hadde jo på "release"-mode - så ingen debug.writeline. Skal se videre :)

Endret av Gjest
Lenke til kommentar

Du har en liten bug.. Bruk Or, ikke And

 

Public Function findCell(ByVal name As String)
	oRng = oSheet.Range("A2:A200")
	Dim rCell As Excel.Range
	For Each rCell In oRng.Cells
		Dim strNavn As Excel.Range = rCell.Offset(0, 0)
		Dim strNummer As Excel.Range = rCell.Offset(0, 1)
		If (Not (IsNothing(strNavn.Value)) And Not (IsNothing(strNummer.Value))) Then
			If (Not strNavn.Interior.ColorIndex = 35 And Not strNavn.Interior.ColorIndex = 38) Then
				If strNavn.Value.ToString.ToLower.Contains(name.ToLower) Or name.ToLower.Contains(strNavn.Value.ToString.ToLower) Then
					Debug.WriteLine(strNavn.Value & " : " & name & " - " & strNummer.Value)
				End If
				'datablader.Add(a)
				'Debug.Print(strNavn.Value & " : " & strNummer.Value & " : " & strNavn.Interior.ColorIndex)
			End If
		End If
	Next rCell
End Function

Endret av Untouchab1e
Lenke til kommentar

Dessverre matcher ikke dette godt nok da det må være 100% korrekt. Ender nok med å bytte ut navn i excel henhold til filnavn på dokumentet,

Lenke til kommentar
  • 1 måned senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...