Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

EXCEL 2003 - uklanjanje referenci sa drugih fajlova i/ili šitova

  • 1 odgovor
  • 2.882 pregleda

Najnovija ↓

EXCEL 2003 - uklanjanje referenci sa drugih fajlova i/ili šitova 24.06.2008. u 17:59 · pre 223 meseca #1
Pozdrav,
imama jedan kompleksan excel fajl u kojem imam na jednom šitu prilično mnogo formula koje predstavljaju međuzbirove, kao i formule koje referenciraju na ćelije i pivot tabele iz drugih šitova. Hteo bih da napravim makro koji će iskopirati šit tako da ostanu formule koje referenciraju polja iz istog šita, a da umesto formula koje referenciraju podatke iz drugih šitova prepišem samo vrednosti.

Znam da postoje Formula i Value property za aktivnu ćeliju, ali me interesuje da li postoji funkcija koja parsira formulu tako da otkrije referenciranje polja iz drugog šita.

Možda je jednostavnije da tražim u formuli string "!", ali ne znam da li će mi to rešiti problem.

VBA sam učio samo na osnovu snimanja makroa i helpa koji ide uz Excel, tako da bi mi dobro došao savet iskusnijeg Excel programera.
Re: EXCEL 2003 - uklanjanje referenci sa drugih fajlova i/ili šitova 25.06.2008. u 15:15 · pre 223 meseca #2
Rešio sam problem sledećim programčićem:

Code:

Sub Test()
   Dim MyCellContents(1 To 96, 1 To 63) As String

   Windows("Source.xls").Activate
   For i = 1 To 96
      For j = 1 To 63
         MyCellContents(i, j) = ActiveSheet.Cells(i, j).Formula
         If Len(MyCellContents(i, j)) > 0 Then
            If Mid(MyCellContents(i, j), 1, 1) = "=" Then
               If InStr(MyCellContents(i, j), "!") > 0 Then
                  MyCellContents(i, j) = ActiveSheet.Cells(i, j).Value
               End If
            End If
         End If
      Next j
   Next i
   
   Windows("Destination.xls").Activate
   For i = 1 To 96
      For j = 1 To 63
         If Len(MyCellContents(i, j)) > 0 And Mid(MyCellContents(i, j), 1, 1) = "=" Then
            ActiveSheet.Cells(i, j).Formula = MyCellContents(i, j)
         Else
            ActiveSheet.Cells(i, j).Value = MyCellContents(i, j)
         End If
      Next j
   Next i

End Sub


Ukratko, kopira se 63 kolone i 96 redova iz Source u Destinantion tako da se reference na druge šitove iz Source fajla zamenjuju vrednostima formula...

Možda će nekome koristiti, meni je uradilo posao.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme