Just nu i M3-nätverket
Jump to content

Söka ut radområde - från första träff till nästa miss...


solbulle

Recommended Posts

Nu har jag knåpat och försökt, utan riktig framgång.

Så jag vänder mig till den samlade expertisen.

 

Jag har data i en pivotabell (som jag inte kan/ska ändra därav detta makro)

Vi kan kalla det en kundlista.

Säg att jag har tre kolumner, i den första kolumnen är det ett övergripande värde = företag, och sen i andra kolumnen är dess underrubriker = anställda

Själva datat finns i tredje kolumnen = telefonnummer

Mitt problem består i av att jag vill kunna söka ut alla alla som då jobbar på ett företag, men då får jag ju, vad jag kan förstå, söka ut de rader med start från den första träffen och sen måste jag ju finna var nästa kommer för att finna ut det område jag är intresserad av.

Eftersom pivotabell ger mig endast företagsnamnet brevid den första posten.

(Hänger ni med?)

Vidare vill jag sen markera dessa hittade rader.

 

 

Här går jag bet..

Tips?

 

//solbulle

www.solbulle.com

 

Link to comment
Share on other sites

På XL-Dennis sidor finner jag denna kod:

 

If Not rnSokOmrade Is Nothing Then
       For Each rnCell In rnSokOmrade
            'Kriteriet för att cell ska bli markerad
            If rnCell.Value = iSokVarde Then
                 'Här skapas det diskontinuerliga cellområdet
                 If rnMal Is Nothing Then
                    Set rnMal = rnCell
                 Else
                    Set rnMal = Union(rnMal, rnCell)
                 End If
           End If
       Next rnCell
End If

 

( http://www.xldennis.com/diskonticellmarkering(vba).htm )

 

Och där är jag bra nära mitt mål... men jag vill ju dock inte att den ska skippa att låta bli eventuella luckor, utan den ska ju plocka med även tomma celler och stanna först när ett annat värde dyker upp.

 

Å, det är ju jättelätt med någon form av loop... men nu loopar det mest i skallen på mig...

 

Link to comment
Share on other sites

Pivottabell, söka i den...

 

Inte riktigt med på vad det är du vill söka efter som jag ska vara ärlig men.

 

1: Du har en Pivotabell - ur Pivot-objeket i VBA kan du ta ut området tabellen upptar

2: Du vet att det är i kolumnn 3 du vill söka. (är tabellen så konstant i sin layout att detta alltid stämmer?)

 

Så nå din kolumn, ex.v.

Sub test()
   Dim pt As PivotTable
   Set pt = Me.PivotTables(1)

   pt.TableRange1.Columns(3).Select
End Sub

Sedan för att söka i detta område - antingen använder du Find för att hitta ett specifikt värde, SpecialCells för att få ut vissa (avvikande) celler eller så stegar du helt enkelt igenom alla cellerna på jakt efter det du vill hitta.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Njao... jag krånglar nog till det hela.

 

 

Det ser ut som följande:

 

 

asea - Pelle - direktör

- Nisse - chef

scania - Benke - direktör

- Kalle - operatör

- Stina - sekreterare

volvo - Åsa - direktör

 

 

Om jag nu söker på i kolumn A (där företaget står) vill jag få med mig både Pelle & Nisse, alltså ska jag fånga upp allt från första träff = asea, tills nästa träff scania o plocka ut raderna från asea till den före scania.

 

Eh.. vet inte om det blev klarare nu...

 

[bild raderad 2008-08-28 10:21:09 av solbulle]

Link to comment
Share on other sites

Ah, du vill slå upp ett företag och kopiera med dig, eller markera eller något annat, de poster som finns under det företaget. Hur man gör beror ju givetvis på hur Pivottabellen ser ut. Man kan antingen använda de kontroller/egenskaper som Pivottabellen har, ex.v.

Dim pt As PivotTable
   Dim field As PivotField
   Set pt = Me.PivotTables(1)
   Set field = pt.PivotFields("id")
   Dim it As PivotItem
   Set it = field.PivotItems("a")
   it.DataRange.Select

 

det finns en hel del man kan göra med dessa men jag är ej så bekanta med dem. Ex.v hur når man namnen? ;ed koden ovan når, ivartfall jag, det som motsvarar din position.

 

Men samtidigt, beroende på hur tabellen ser ut, kanske detta duger? notera att man formatera tabeller på massor med olika vis...

 

Sedan går det även att plocka ut värden ut tabeller med formler, glöm inte det. VBA kod behövs inte alltid

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Hehe, jag försöker igen.

 

Det går säkert att göra som du skriver, men jag vill inte påverka själva pivotabellen iom att den datan som ligger i den hämtas från en databas som man inte alltid kommer åt.

 

Utan jag vill hantera det som står i cellerna som vilket excelark som helst.

 

I kolumn A står ett företagsnamn som jag vill kunna söka reda på, när jag träffar (listan är alltid sorterad) så vill jag markera den raden samt de efterkommande raderna tills nästa företagsnamn dyker upp.

 

På så sätt har jag fått tag i alla som är knutna till det företaget.

 

Jag vill alltså inte på något sätt påverka självapivotabellen, bara få de rader som hör till det företag jag sökt på markerade.

I min exempelbild skulle jag alltså sökt på "volvo" och då vill jag få de tre raderna markerade.

 

//solbulle

www.solbulle.com

 

[bild bifogad 2008-08-28 14:01:28 av solbulle]

1077189_thumb.jpg

Link to comment
Share on other sites

bara en kort kommentar, inget mer denna gång - koden påverkar inte alls tabellen, den drar bara nytta av egenskaper i den.

 

Visst går det att lösa utan dessa men med exemplet ovan kan du bara stega igenom alla PivotFields, lokalisera de värden som hör ihop med ett företag, kopiera dessa eller vad du nu vill göra.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Okidoki.

 

Jag måste erkänna att jag inte direkt tittade på koden utan tog för givet att hela pivotabellen skulle laddas om (vilket jag tycker den typ alltid gör trots att datat finns men man bara vill vrida på sakerna - kanske går att komma förbi det också iofs...? )

 

Det här var ju en väg att gå, dock känns det för mig ännu pyssligare iom att man inte alls är familjär med begreppen osv.

 

Jag tror att det lutar åt ett fulhack, men jag ska försöka posta den lösning jag kommer fram till här hur som helst.

 

 

 

//solbulle

www.solbulle.com

 

Link to comment
Share on other sites

Okej, du vill inte använda pivot-kontrollerna, inget problem. vet man bara var data finns och hur det är uppställt kan man givetvis arbeta på annat vis.

 

Tar en titt på din bild..

 

Sub MyCopy()
   Dim str As String
   Dim c As Range
   str = InputBox("Vad vill du söka efter?", "Sökterm")
   If str = "" Then Exit Sub

   With Me.Range("A:a")
       Set c = .Find(what:=str, LookIn:=xlValues, lookat:=xlWhole)
       If c Is Nothing Then
           MsgBox "Hittade inget", vbInformation, "Sökterm """ & str & """"
       Else
           Dim rnToCopy As Range
           Dim i As Integer
           i = 1
           While c.Offset(i, 0) = "" And c.Offset(i, 1) <> ""
               i = i + 1
           Wend
          ' If i = 1 Then
          '     MsgBox "inget att kopiera", vbInformation, "tomt"
          '     Exit Sub
          ' End If
           Set rnToCopy = Me.Range(c.Offset(0, 1), c.Offset(i - 1, 2))
           Dim rn As Range
           Set rn = Application.InputBox("markera var du vill ha värdena (" & i & " rader)", "Kopiera", Type:=8)
           If rn Is Nothing Then Exit Sub
           Set rn = rn.Resize(i, 2)
           rn.Value = rnToCopy.Value
       End If
   End With
End Sub

 

och flyttar tråden till VBA

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...