02. december 2005 - 16:05Der er
57 kommentarer og 1 løsning
VB Data Overførelse
Fra Et sheet til et andet.
Fra Sheet1 Ark "T" C2:O25 Til Sheet2 Ark "Dagens Nr på Måneden F.eks 15/01/05 = 15" For Den henter det over skal den se om M2 på Ark "T" Er på Sheet "Dagen" K, Kolonne Hvis det er der, skal den ikke gøre noget. Hvis det ikke er det skal den tage værdierne fra Ark "T" Og smide dem under dem som er der!!
Har rodet lidt med det, og måske fundet en løsning:
Sub CopySheet()
Dato = Sheets("T").Range("M2")
DatoExist = False
For Each c In Worksheets("Dagen").Range("K1:K10000") If c = Dato Then DatoExist = True Next c 'If Not Worksheets("Dagen").Range("K:K").Find(Dato, LookIn:=xlValues) Is Nothing Then ' DatoExist = True 'End If
If Not DatoExist Then LastRow = Worksheets("15").Cells.SpecialCells(xlLastCell).Row Sheets("T").Range("C2:O25").Copy Worksheets(Format(Day(Dato), "0")).Range("C" & LastRow + 1) End If
End Sub
Prøver lige på at finde en bedre dato-søgefunktion. Jeg kunne ikke få den oprindelige ide til at virke (er udkommenteret), men ved ikke hvorfor.
Ok, så løste jeg også lige den uden større sværdslag. Nedenstående er lidt hurtigere end det sidste forslag, da dato-søgningen er hurtigere og kigger på alle celler i K kolonnen.
Problemet med datosøgningen var det sædvanlige med at VBA bruger det fæle engelske tidsformat, hvor måneden vises først :0)
Sub CopySheet()
Dato = Format(Sheets("T").Range("M2"), "mm/dd/yyyy") DatoExist = False
If Not Worksheets("Dagen").Range("K:K").Find(Dato, LookIn:=xlValues) Is Nothing Then DatoExist = True End If
If Not DatoExist Then LastRow = Worksheets("15").Cells.SpecialCells(xlLastCell).Row Sheets("T").Range("C2:O25").Copy Worksheets(Format(Day(Dato), "0")).Range("C" & LastRow + 1) End If
Kan man gøre det sådan at den tager tager en værdi eks A2= Maj "Maj" Så Åbnet den og søger i Ark (Hvad Værdien siger i B1=21) Så det kommer til at være C:/test/Maj.xls'Ark"21"'
Jamen den mulighed tænkte jeg jo ikke lige over. Beklager :0)
Jeg er ikke helt klar over hvor du vil hen med det sidste spørgsmål. Hvad er det du vil have til at åbne og søge i C:/test/Maj.xls'Ark21 ? Er det datoen, der skal søges i K kolonnen?
Hvis Jeg Laver 12 Sheets et forhver måned "januar.xls:februar:osv" I hver sheet laver jeg et ark for hver dag i den måned "1:2:3:osv" det skal så lige være to Ark et med total og en suplant.
Hvia man så lavet den så den så på værdien i en celle "A1" hvor man har månedens navn "desember" ville den tage og åbne december.xls Der efter på næste værdi "B1" datoen i dag men kun DD/ så det vil blive 2. det er så Ark"2" den skal smide det ind på
På Sheet1 det kalder vi data.xls det er der dataen kommer fra... på ark "T;C2;=25" Det skal over på et andet sheet? det sheet er den måned vi er i F.eks December.xls på ark 2 fordi vi har den 2. i dag. så skal man bare lave de ark man skal bruge og så vil den via data.xls/ark"T;A1:B1" Se hvilken sheet & ark den skal overføre den data til som er på "T;C2:O25" Men kun Hvis "M2" på data.xls/ark"T" Ikke Finden i kolonne K.. det er lidt svært at forklare...
"M2" er et id-nr det bliver laver når man printer og når det står i m2 laver den ikke et nyt så man kan printe samme sata ud uden at lave nyt id den skal så også bare gøre det med at overføre den date så den ikke vil komme to gange over på de andre ark.
If Not DatoExist Then LastRow = Workbooks(WBName).Worksheets("15").Cells.SpecialCells(xlLastCell).Row Sheets("T").Range("C2:O25").Copy Workbooks(WBName).Worksheets(Format(Day(Dato), "0")).Range("C" & LastRow + 1) End If
Havde helt misforstået den der M2. Skulle være rettet i det nedenstående (hvis altså ID blot er et tal). Desuden finder den selv aktuel måned og aktuel dag (uafhægigt af hvad der står i regnearket):
Sub CopySheet()
CheckID = Sheets("T").Range("M2") IDExist = False
If Not Worksheets("Dagen").Range("K:K").Find(CheckID, LookIn:=xlValues) Is Nothing Then IDExist = True End If
If Not IDExist Then WBName = Format(Date, "mmmm") Workbooks.Open FileName:="C:\Test\" & WBName & ".xls" Workbooks("Splokit2").Activate
laver fejl her If Not Worksheets("Dagen").Range("K:K").Find(Dato, LookIn:=xlValues) Is Nothing Then den skal så også se på A1 for sheet og B1 for ark som den skal søge i
jeg har lavet to filer første december.xls anden maj.xls i hver af dem er det 7 ark første "Total" 2. "suplant" 3. "1" 4. "2" 5. "3" 6. "4" 7. "5" Hvis det så står maj i a1 og B1 står der 2 på mit ark "splokit2.xls" Så skal den søge efter det sheet som a1 angiver på den url C:\test\ når den så finder den skal den søge på det ark som B1 angiver. det søger den i kolonne k om værdien på det andet ark "M2" findet hvis ikke det er der skal den smide det ned under det det nu må være det.
If Not Workbooks(WBName).Worksheets(ShName).Range("K:K").Find(CheckID, LookIn:=xlValues) Is Nothing Then IDExist = True End If
If Not IDExist Then LastRow = Workbooks(WBName).Worksheets(ShName).Cells.SpecialCells(xlLastCell).Row Sheets("T").Range("C2:O25").Copy Workbooks(WBName).Worksheets(ShName).Range("A" & LastRow + 1) End If
man kan dele den i to... en som smider det over og en ander som ser efter om M2 er på det ønsket ark i den ønsket kolonne. de skal så bare arbejde sammen så hvis det ikke er det skal den smide det over hvis det er der skal den ikke gøre noget..
If Workbooks(WBName).Worksheets(ShName).Range("K:K").Find(CheckID, LookIn:=xlValues) Is Nothing Then LastRow = Workbooks(WBName).Worksheets(ShName).Cells.SpecialCells(xlLastCell).Row Sheets("T").Range("C2:O25").Copy Workbooks(WBName).Worksheets(ShName).Range("A" & LastRow + 1) End If
If Workbooks(WBName).Worksheets(ShName).Range("K:K").Find(CheckID, LookIn:=xlValues) Is Nothing Then
I denne linie undersøges om der i den aktuelle fil (skulle være december lige p.t.) under det aktuelle faneblad (skulle stadig være 2) i kolonne K skulle være et tal der er lige med tallet fra T!M2
If Workbooks(WBName).Worksheets(WSName).Range("K:K").Find(CheckID, LookIn:=xlValues) Is Nothing Then LastRow = Workbooks(WBName).Worksheets(WSName).Cells.SpecialCells(xlLastCell).Row Sheets("T").Range("C2:O25").Copy Workbooks(WBName).Worksheets(WSName).Range("A" & LastRow + 1) End If
If Workbooks(WBNAME).Worksheets(WSNAME).Range("K:K").Find(CheckID, LookIn:=xlValues) Is Nothing Then LastRow = Workbooks(WBNAME).Worksheets(WSNAME).Cells.SpecialCells(xlLastCell).Row Sheets("T").Range("C2:O25").Copy Workbooks(WBNAME).Worksheets(WSNAME).Range("A" & LastRow + 1) End If
De fungerer uden problemer her! Dvs. jeg får ingen fejlmeddelelser. Jeg var også lige inde og slette 11111 i december filen og så blev data kopieret over uden problemer.
Hvis den ikke hedder Workbooks("Splokit.xls").Activate laver den fejl der
Hvis den Workbooks("Splokit.xls").Activate laver den fejl her If Workbooks(WBNAME).Worksheets(WSNAME).Range("K:K").Find(CheckID, LookIn:=xlValues) Is Nothing Then
Jeg prøver stadig at følge lidt med, men er nødt til at holde lidt igen, da jeg læser til eksamen. Nej ikke min egen eksamen - jeg skal eksaminere nogen stakkels studerende. Men ellers skulle jeg være tilbage på fuld styrke i næste uge, eller når rapportlæsningen bliver for trættende :0)
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.