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

Medel från två olika celler, ifyllda ibland


Flyckten

Rekommendera Poster

Hej,

 

 

 

Känns som världens lättaste problem men får inte till nån bra lösning.

 

 

Vill att formeln ska göra följande:

 

 

 

Säg att

 

A1 = Tal1

 

A2 = Tal2

 

 

 

Då vill jag att

 

A3= medel av tal1 och tal2

 

Om A1 & A2 är ifyllda ska den ta medel som vanligt.

 

Om A1 är tom ska enbart A2 återges, utan division0,värdefel eller att A1(tom) räknas som en nolla.

 

Om A2 är tom ska enbart A1 återges, utan division0, värdefel eller att A2(tom) räknas som en nolla.

 

Är båda tomma ska cell A3 också vara tom, alltså inget division0 eller värdefel.

 

 

 

Ska göra det för fler tal än A1 och A2 men principen blir detsamma.

 

Dessutom kommer inte själva "A1" användas utan en form av =letarad() funktion användas som återger cellens värde.

 

 

 

 

Det kan även hända att själva värdet i cellen är 0 vilket då ska räknas med i medelberäkningen.

Länk till kommentar
Dela på andra webbplatser

=OMFEL(MEDEL(A1:A2);"")

borde väl fungera?

 

Givet du att din LETARAD inte returnerar felvärde utan exempelvis en tom cell när inget hittas

=OMFEL(LETARAD(..);"")

Länk till kommentar
Dela på andra webbplatser

=OMFEL(MEDEL(A1:A2);"")

borde väl fungera?

 

Givet du att din LETARAD inte returnerar felvärde utan exempelvis en tom cell när inget hittas

=OMFEL(LETARAD(..);"")

 

 

 

Har prövat det men det blir #värdefel. Jag antar för att den inte bortser från "" när den är inbakad i formeln.

 

 

 

=OMFEL(MEDEL(LETARAD($AE17;$A$5:$AC$26;AF$14;FALSKT);LETARAD($AE17;$A$31:$AC$52;AF$14;FALSKT));"")

 

 

 

Det här har jag prövat men det blir tokigt... Saknas ena värdet så blir cellen tom.

Länk till kommentar
Dela på andra webbplatser

mmh, du har en letarad i medel.

Nä, du får nog skriva som

=MEDEL(OMFEL(LETARAD():"");OMFEL(LETARAD();""))

tror jag.

Fast om du har tomma celler som LETARAD returnerar då kommer LETARAD returnera noll vilket du inte vill.

 

Då blir det än mer komplext, nästan så jag säger att du bör skriva din LETARAD i två enskilda celler men:

 

=MEDEL(OMFEL(OM(LETARAD()="";"";LETARAD());"");OMFEL(OM(LETARAD()="";"";LETARAD());""))

 

just för att Excel i dessa lägen hanterar en tom cell som en cell med värdet noll.

Men varför använda MEDEL?

Undrar om inte en kombination av SUMMA.OMF och ANTAL.OMF kan fungera enklare.

 

Allt blir mycket mycket enklare om du i dina ursprungsdata lägger till en kolumn, ett stöd, där du kollar om cell är tom:

=OM(B2<>"";"x";"")

varvid man enkelt kan lösa detta problem med MEDEL.OMF

=MEDEL.OMF(B1:B3;A1:A3;E2;C1:C3;"x")

Där B1 till B3 är området med dina värden.

A1:A3 är dina primära nycklar.

i C1:C3 finns värdet x för de rader som ska tas med, som inte är tomma.

 

Tror kanske det går att lösa via SUMMA och intressant/avancerad INDEX-formler men detta är enklare att förstå sig på än en sådan.

 

Duger det?

Länk till kommentar
Dela på andra webbplatser

mmh, du har en letarad i medel.

Nä, du får nog skriva som

=MEDEL(OMFEL(LETARAD():"");OMFEL(LETARAD();""))

tror jag.

Fast om du har tomma celler som LETARAD returnerar då kommer LETARAD returnera noll vilket du inte vill.

 

Då blir det än mer komplext, nästan så jag säger att du bör skriva din LETARAD i två enskilda celler men:

 

=MEDEL(OMFEL(OM(LETARAD()="";"";LETARAD());"");OMFEL(OM(LETARAD()="";"";LETARAD());""))

 

just för att Excel i dessa lägen hanterar en tom cell som en cell med värdet noll.

Men varför använda MEDEL?

Undrar om inte en kombination av SUMMA.OMF och ANTAL.OMF kan fungera enklare.

 

Allt blir mycket mycket enklare om du i dina ursprungsdata lägger till en kolumn, ett stöd, där du kollar om cell är tom:

=OM(B2<>"";"x";"")

varvid man enkelt kan lösa detta problem med MEDEL.OMF

=MEDEL.OMF(B1:B3;A1:A3;E2;C1:C3;"x")

Där B1 till B3 är området med dina värden.

A1:A3 är dina primära nycklar.

i C1:C3 finns värdet x för de rader som ska tas med, som inte är tomma.

 

Tror kanske det går att lösa via SUMMA och intressant/avancerad INDEX-formler men detta är enklare att förstå sig på än en sådan.

 

Duger det?

 

 

Svårt att förklara då jag inte riktigt har det upplagt så enkelt som jag beskriver.

 

 

 

Bifogar filen, det är området AE15:AL38 som är det jag klurar på att få till. Celler med grön bakgrund innehåller formler, enbart vita ska redigeras. Siffrornar jag matat in är bara för test.

 

Hoppas du förstår vad jag försöker uppnå.

 

 

Inmatning Axios och Epsilon int.zip

Länk till kommentar
Dela på andra webbplatser

Mmh, tror jag förstår.

Du räknar samman dygnsmedel för två olika "lägen", apsilon och epsilon. Du vill sedan ta fram totala dygnsmedlet över dessa två.

 

Är det dessa eller kan det dyka upp fler "lägen"?

 

Är positionerna i tabellerna låsta, dvs Na2O ligger alltid på rad två i alla tabeller, kolumn ett är alltid TR022?

Om så kan vi hoppa över Letarad och liknande.

 

En annan tanke, ibland kan det vara lättare att gå via en beräkningstabell än direkt till presentationen.

En till tanke, om man matar in allt i tabellformat (oh vad jag gillar tabeller) vore denna fråga busenkel att besvara, skulle bara säga Pivot...

Länk till kommentar
Dela på andra webbplatser

Mmh, tror jag förstår.

Du räknar samman dygnsmedel för två olika "lägen", apsilon och epsilon. Du vill sedan ta fram totala dygnsmedlet över dessa två.

 

Är det dessa eller kan det dyka upp fler "lägen"?

 

Är positionerna i tabellerna låsta, dvs Na2O ligger alltid på rad två i alla tabeller, kolumn ett är alltid TR022?

Om så kan vi hoppa över Letarad och liknande.

 

En annan tanke, ibland kan det vara lättare att gå via en beräkningstabell än direkt till presentationen.

En till tanke, om man matar in allt i tabellformat (oh vad jag gillar tabeller) vore denna fråga busenkel att besvara, skulle bara säga Pivot...

 

Svar ja, det är enbart dessa två lägen som kommer att finnas.

 

Det är det som är problemet, de är i olika följd, radordning på ämnen, från Axios och från epsilon. Värdena kommer från en mätmaskin och dessa kommer kopieras och klistras in i den radordning som det är på motsvarande maskin då. Därav letarad kommandot.

 

Pivot är inte ens att tänka på för allt det här dokumentet handlar om är att det ska klistras in värden, beroende på maskin klistrar man in den övre eller nedre området. Sen kommer dessa siffror länkas från dygnsmedel epsilon+axios rutan.

 

 

Länk till kommentar
Dela på andra webbplatser

Okej, låt mig fundera lite...

 

Tror nog detta går att lösa elegant. Återkommer.

Länk till kommentar
Dela på andra webbplatser

Fast ett problem.

 

Posterna S* och Fe*

* är wildcard i sökningar i Excel. Du kan inte byta det tecknet mot något annat.

Annars ser en sökning på S* träff på SiO2 exempelvis.

Länk till kommentar
Dela på andra webbplatser

Detta borde väl fungera för dig. Ibland är den enklaste vägen den långa vägen.

 

ta en titt i de dolda kolumnerna för att se vad jag gjort.

 

Förstår vad som händer i de rosa raderna, alltså index formlerna men har svårt att hänga med i

 

=OM(ÄRFEL(HITTA("*";AG17));PASSA(AG17;$A$4:$A$26;0);PASSA(AG17;$A$4:$A$26;SANT))

 

Då jag inte använt kommando passa och hitta. Kan du förklara kanske jag förstår snabbare ?

 

 

Sen ÄRFEL(); är ditt logiska test, om man inte lägger ett =, förväntar den sig då 1 eller 0?

Länk till kommentar
Dela på andra webbplatser

Den där blev lite speciell på grund av att du har * i det man ska söka bland.

Fick söka lite på nätet och fann då att om man ger värdet SANT som sista argument så kommer PASSA hitta rätt träff. * är wildcard vid sökningar.

 

Dvs om du har en kolumn med

A

A*

 

i och söker med =PASSA("A*";A1:A2;0)

så kommer den hitta rad 1.

Om du skriver

=PASSA("A*";A1:A2;SANT)

kommer den hitta rad 2 vilket var vad vi önskade.

MEN denna passa kommer ge fel resultat om vi inte har en * i söksträngen, därav att HITTA-satsen finns där. Om det inte finns en * i söksträngen, då returnerar HITTA ett felvärde.

ÄRFEL returnerar då SANT varvid första PASSA i OM-satsen körs, annars kör andra PASSA-satsen.

PASSA - söker efter första argumentet i den givna vektorn, argument två, enligt det villkor som tredje argumentet ger. Returnerar relativt index i vektorn om träff, annars ett felvärde.

Länk till kommentar
Dela på andra webbplatser

Jag förstår, smart lösning! Dock hade jag kunnat ändra Fe* till Fe_ Eller vad som helst :) Kul att lära sig undvika ett sådant problem hursomhelst.

 

 

 

En annan lite sidogrej som ändå kommer att vara ett bekymmer. Värdena som ska matas in kommer från en rapport i .txt format. Som det ser ut nu skulle man behöva klistra in rapporten (den delen med siffror och ämnen) i ett excel dokument, köra data -> text till kolumner. Sedan göra en ersätt . med , då alla värde siffror innehåller punkter och inte komma.

 

Det borde finnas något enkelt sätt att göra någon slags "import" variant. Kanske dolda celler som tar värdet och ersätter . med , ?

 

Bifogar ett exempel så förstår du vad jag menar.

 

 

 

Dessutom ser "rapporten" olika ut för de två maskinerna men principen är densamma.

3f 745 1.txt

Länk till kommentar
Dela på andra webbplatser

Att importera text-filer är alltid lite komplext.

 

Finns tre vägar att gå

1: Den manuella du beskriver

2: Formelbaserad. Givet att man vet hur det man ska importera ser ut, hur stor det är. =Byt.Ut(...)*1 exempelvis och så lite till för att se till att saker hamnar rätt. Bara att importera till samma område i bladet så fungerar det bra.

3: VBA-kod. Om det behövs dynamiska delar, om storleken på det som ska importeras inte är förutsägbar, är det enklaste VBA-kod.

 

 

Får man fråga vad du jobbar med, vad det är som analyseras?

Länk till kommentar
Dela på andra webbplatser

Att importera text-filer är alltid lite komplext.

 

Finns tre vägar att gå

1: Den manuella du beskriver

2: Formelbaserad. Givet att man vet hur det man ska importera ser ut, hur stor det är. =Byt.Ut(...)*1 exempelvis och så lite till för att se till att saker hamnar rätt. Bara att importera till samma område i bladet så fungerar det bra.

3: VBA-kod. Om det behövs dynamiska delar, om storleken på det som ska importeras inte är förutsägbar, är det enklaste VBA-kod.

 

 

Får man fråga vad du jobbar med, vad det är som analyseras?

 

 

Jobbar inom gruvindustrin, med ett laboratorium och försöker få våran hantering kring inmatning av färdiga analyser och liknande att bli enklare, då väldigt mycket skrivs ner på papper först och sedan in på en annan dator i en excelfil, allt för hand. De viktigaste ämnen skrivs idag men med en tämligen "automatiserad" lösning så får vi in mer data på smidigare sätt!

 

 

Programvaran till utrustningen skriver ut rapporter i .txt format, ingen direkt import till excel. Men ska trixa med lite makro så borde man kunna lägga filen i en mapp, gå in i excel, trycka "importera" så fixar den det automatiskt :) Försöker få till allt detta samtidigt som jag har en massa dagliga sysslor så det är lite tight med tid, mycket som ska "kodas" men jag ger inte upp :)

Länk till kommentar
Dela på andra webbplatser

Okej, intressant :-)

 

Det går utmärkt att göra det du vill, det vill säga en knapp, du markerar vilken fil, Excel öppnar, försöker identifiera, formaterar och kopierar in data på rätt plats.

 

Det går.

Gäller bara att se till att

Excel vet vad som ska importeras, känner till mallen.

man skapar förslagsvis en mall med formler som formar om alla data till det format, det utseende boken behöver det i

Man ser till att koden vet vart data ska kopieras

Och man kopierar resultatet av formlerna i steg två.

 

Dvs man lägger så mycket arbete som möjligt på bladet, koden ska sköta endast det som formler inte kan.

 

Börja manuellt förresten.

1: Importera textbladet till ett tomt blad. (du kan skapa en uppdaterbar fråga, kör frågan igen och fil med samma namn läses in igen)

2: Skapa formler som ser till att data, på samma blad, får det format du önskar, den ordning du önskar.

3: Kopiera resultatet, enbart värdena, där det ska vara.

 

Sedan "bara" att automatisera steg för steg.

Om osäker spela in makro när du gör ett steg, se vad som händer.

Om osäker än, fråga här.

Ja, jag har byggt liknande förr.

 

Gissar att du behöver kanske 30-40 rader med kod?

Länk till kommentar
Dela på andra webbplatser

... text ...

 

Mycket stort tack för en grundplan :) Ska hugga tag i detta när jag först får till själva output från analysdatorn till en annan dator där själva rapportering sker. Då får jag lite bättre koll på hur textfilerna kommer se ut osv.

 

 

Jag tror att jag borde kunna fixa detta efter ett tags pillande. Återkommer om jag kör fast!

Länk till kommentar
Dela på andra webbplatser

Okej jag har kommit en bit på väg.

 

 

 

Importeringen fungerar men jag funderar om det går att göra en snyggare import.

 

 

Exempelvis, går det att importera en enskild rad från ett text dokument, tänker mig typ en "EndRow" motsvarighet till " .TextFileStartRow = 1 " ?

 

 

 

Därefter så får jag all data jag vill till en "städad" kolumn genom lite länkar osv.

 

Men den städade kolumnen ska ju in på olika ställen beroende på period och på TRXXX, går det att skriva excelformel i VBA? Eller måste jag lägga en extremt lång If-sats med alla olika alternativ? Ett bra och smidigt sätt att lösa detta vore tacksamt! Vill inte ha formler i vita rutorna i "Resultat" fliken.

 

Går det även att lägga något slags skrivskydd så att man bara kan "spara som" på filen efter användandet? Detta är för att "mallen" aldrig ska förändras, varje dag sparas ett nytt exceldokument med datum osv.

Samtliga ämnen Axios och Epsilon med importfunktion.xlsx

Länk till kommentar
Dela på andra webbplatser

Nu ska vi se.

 

Om du vill ha radimport, läsa in rad för rad då är det en helt VBA-baserad lösning.

Om nu det inte är en jättefil som ska läsas in rekommenderar jag snarare att man kör en import av filen till ett blad och stegar igenom resultatet med VBA om det krävs.

 

När du städat dina data, ställt upp dem så som du vill ha dem på ett blad, använder du VBA för att kopiera dem rätt, enbart värdena.

Dvs på något vis läs av i filen vad för data det är, vilken typ/tid och placera med VBA dina data på rätt plats.

Hur hittar du rätt plats?

Två enkla sätt

1: Namnge startceller för de olika områdena. Använd dessa namn i koden

2: Via formler ta fram en startadress och skriv i en cell som VBA sedan använder.

 

Föredrar personligen metod ett, kanske att man via formler på bladet bestämmer vilket området något ska till (område 1, 2, 3...) och i VBA då tar fram att det är området rnDataTarget# som dina data ska kopieras till. Typ.

 

Direkt svar på din fråga: Ja man kan skriva formler via VBA. Spela in ett makro när du anger en formel och se vad du får.

 

Skrivskydda. Om du lägger upp den som en mallfil ska den inte gå att skriva över om den öppnas korrekt.

Andra alternativ är att automatiskt spara under visst namn eller kanske lägga in en knapp som ser till att tömma boken om så behövs.

 

Lägger till ett steg på min gång i förra inlägget:

4: Rensa importbladet på data.

 

Onödigt att spara dessa och du ska inte ha någon länk kvar till det i dina data i boken som jag förstått det hela.

 

Sådär, där du med? Om du vill lägga upp fil med VBA-kod, spara ned den i ett zip-arkiv och ladda upp.

Länk till kommentar
Dela på andra webbplatser

Försöker lägga upp .zip men den vill inte notera någon bilaga så jag får inte upp filen.

 

 

 



Sub ImportTxt()
'
' ImportTxt Makro
'
'

'Variabel definering
Application.ScreenUpdating = False

Dim strfilnamn As String
Dim strProvID As String
Dim strTrans As String
Dim strPeriod As String
Dim strSkift As String



MsgBox ("Välj filen med resultatet")
strfilnamn = Application.GetOpenFilename("Text Files (*.txt), *.txt") 'Låter användaren välja fil, textfiler bara.
If filnamn = "False" _
Then _
Exit Sub 'Användaren tryckte cancel

'Importerar data från textfilen användaren valt och lägger datan i Fliken import
   With Worksheets("Import Axios").QueryTables.Add(Connection:="TEXT;" & strfilnamn, _
       Destination:=Range("$A$5"))
           .Name = "TEXT;" & strfilnamn
           .FieldNames = True
           .RowNumbers = False
           .FillAdjacentFormulas = False
           .PreserveFormatting = True
           .RefreshOnFileOpen = False
           .RefreshStyle = xlOverwriteCells
           .SavePassword = False
           .SaveData = True
           .AdjustColumnWidth = True
           .RefreshPeriod = 0
           .TextFilePromptOnRefresh = False
           .TextFilePlatform = 850
           .TextFileStartRow = 1
           .TextFileParseType = xlDelimited
           .TextFileTextQualifier = xlTextQualifierDoubleQuote
           .TextFileConsecutiveDelimiter = True
           .TextFileTabDelimiter = False
           .TextFileSemicolonDelimiter = False
           .TextFileCommaDelimiter = False
           .TextFileSpaceDelimiter = True
           .TextFileColumnDataTypes = Array(2, 1, 2)
           .Refresh BackgroundQuery:=False
   End With

strTrans = InputBox("Skriv in transportör, fullständigt (Ex: TR016, inte TR 16 eller TR16")
strPeriod = InputBox("Skriv Period för provtagning (01-08, 09-16 eller 17-24")

With Worksheets("Import Axios")
Range("cellTrans").FormulaR1C1 = strTrans
Range("cellPeriod").FormulaR1C1 = "'" & strPeriod
Range("importRes").Copy
End With

If strPeriod = "01-08" Then
strSkift = "NATT"
ElseIf strPeriod = "09-16" Then
strSkift = "FM"
ElseIf strPeriod = "17-24" Then
strSkift = "EM"
End If

strInklipp = strTrans & strSkift

With Worksheets("Resultat")
.Range(strTrans & strSkift).Paste
End With


Application.ScreenUpdating = True

End Sub

 

 

 

Så här ser koden ut nu men det fungerar inte riktigt bra... Den vill inte göra sista "paste" kommandot.

 

Har döpt mål cellerna till exempel vis TR043EM om det är TR043 och 17-24 som gäller därav hela if historien.

 

Den verkar dessutom inte gilla att "byta" worksheet för står jag i fel blad och kör makrot så går det inte. Nu kommer det iofs vara knutet till en knapp men själva copy -> paste kommer ju ske från ett blad till det andra.

 

 

Länk till kommentar
Dela på andra webbplatser

Det löste sig fint, hade skrivit fel variabler.

 

Tror jag får det att funkar bra nu, var tvungen dock att lägga in;

 

Sheets("Import Axios").Select

 

och

 

Sheets("Resultat").Select

 

 

 

För att lösa att den hakar upp sig på att den är i fel blad.

 

 

Nu skulle jag dock vilja att man bara kunde välja styrda alternativ på TRXXX och skift, då är det lättare att det inte blir fel :)

 

Tips?

 

 

Det blir även fel om jag väljer "Avbryt" vid filimport steget. Går det att undvika?

Länk till kommentar
Dela på andra webbplatser

Löste det med ett formulär smidig och bra!

 

 

 

Laddar gärna upp lösningen men går inte att få upp .zip - När jag klickar bläddra och sen väljer filen och tryck OK så kommer ingen fil/sökväg i fältet..

Länk till kommentar
Dela på andra webbplatser

Borde gå via zip-arkiv...

 

men men. Snabb genomgång av koden, några ändringar.

En With-sats till och en korrekt referens inom denna.

 

Korrekta referenser inom en till With-sats

Några icke definierade variabler (Ställ in VBA-editorn att alltid kräva deklaration av allt)

 

och en ändring i sista raden. Paste fungerar inte ett Range-objekt, du får använda PasteSpecial

 

Fungerar det som det ska nu?

Sub ImportTxt()
'
' ImportTxt Makro
'
'

'Variabel definering
Application.ScreenUpdating = False

Dim strfilnamn As String
Dim strProvID As String
Dim strTrans As String
Dim strPeriod As String
Dim strSkift As String
Dim strInklipp As String
Dim filnamn As Variant


MsgBox ("Välj filen med resultatet")
strfilnamn = Application.GetOpenFilename("Text Files (*.txt), *.txt") 'Låter användaren välja fil, textfiler bara.
If filnamn = "False" Then Exit Sub  'Användaren tryckte cancel

'Importerar data från textfilen användaren valt och lägger datan i Fliken import
With Worksheets("Import Axios")
   	With .QueryTables.Add(Connection:="TEXT;" & strfilnamn, _
       	Destination:=.Range("$A$5"))
       	.Name = "TEXT;" & strfilnamn
       	.FieldNames = True
       	.RowNumbers = False
       	.FillAdjacentFormulas = False
       	.PreserveFormatting = True
       	.RefreshOnFileOpen = False
       	.RefreshStyle = xlOverwriteCells
       	.SavePassword = False
       	.SaveData = True
       	.AdjustColumnWidth = True
       	.RefreshPeriod = 0
       	.TextFilePromptOnRefresh = False
       	.TextFilePlatform = 850
       	.TextFileStartRow = 1
       	.TextFileParseType = xlDelimited
       	.TextFileTextQualifier = xlTextQualifierDoubleQuote
       	.TextFileConsecutiveDelimiter = True
       	.TextFileTabDelimiter = False
       	.TextFileSemicolonDelimiter = False
       	.TextFileCommaDelimiter = False
       	.TextFileSpaceDelimiter = True
       	.TextFileColumnDataTypes = Array(2, 1, 2)
       	.Refresh BackgroundQuery:=False
   	End With
End With

strTrans = InputBox("Skriv in transportör, fullständigt (Ex: TR016, inte TR 16 eller TR16")
strPeriod = InputBox("Skriv Period för provtagning (01-08, 09-16 eller 17-24")

With Worksheets("Import Axios")
.Range("cellTrans").Value = strTrans
.Range("cellPeriod").Value = "'" & strPeriod
.Range("importRes").Copy
End With

If strPeriod = "01-08" Then
strSkift = "NATT"
ElseIf strPeriod = "09-16" Then
strSkift = "FM"
ElseIf strPeriod = "17-24" Then
strSkift = "EM"
End If

strInklipp = strTrans & strSkift

With Worksheets("Resultat")
.Range(strTrans & strSkift).PasteSpecial xlPasteAll
End With


Application.ScreenUpdating = True

End Sub

Länk till kommentar
Dela på andra webbplatser

Det mesta fungerar kanon.

 

En sak dock:

 

När jag valt importering och alternativ och sedan kommer till "välj fil" dialogen, då blir det fel när jag klickar cancel.

'Låter användaren välja fil, textfiler bara.
MsgBox ("Välj filen med resultatet")
strfilnamn = Application.GetOpenFilename("Text Files (*.txt), *.txt")

'Användaren tryckte cancel
If strfilnamn = "False" Then Unload Val
If strfilnamn = "False" Then Exit Sub

 

Fel här någongstans?

 

 

Sedan undrar jag om man kan importera texten till området utan att den ska vara "länkad" utan bara som att man skulle kopierat in värden. För nu blir det förmodligen något slags fel ifall filen byter plats eller om själva tidigare txt fil är borttagen/flyttad.

 

När jag markerar "importområdet" och trycker delete står följande: "Det område som du har tagit bort är associerad med en fråga från en extern källa. Vill du ta bort området och frågan? Om du klickar nej kommer frågan att hämta nya data till arbetsbladet nästa gång frågan uppdateras."

 

 

 

Lyckades bifoga nu, text filen är bara en exempel fil hur filerna som importeras ska se ut.

 

Samtliga ämnen Axios och Epsilon med importfunktion.zip

23257 .txt

Länk till kommentar
Dela på andra webbplatser

Okej, några saker som jag påpekade redan i förra inlägget.

 

Filnamnet, deklarera variabeln som Variant och skriv jämförelsen som

If strfilnamn = False Then Unload Val

 

Bort bort med Select-satserna. Tar bara tid.

With Worksheets("Import Axios")
.Range("Importfält").ClearContents
With .QueryTables.Add(Connection:="TEXT;" & strfilnamn, _
   	Destination:=.Range("$A$5"))

fungerar bättre, säkrare, snabbare.

 

Du vill inte spara frågedefinitionen?

Lägg till

.Delete

i slutet av With-satsen inom vilken du skapar frågan.

 

och lägg till en rad till i slutet:

Application.CutCopyMode = False

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...