Kopier hver n'te linje fra ett ark til et annet

stemmer
54

Jeg har et Excel-regneark med en kolonne, 700 rader. Jeg bryr meg om hver syvende linjen. Jeg ønsker ikke å måtte gå inn og slette de 6 rader mellom hver rad jeg bryr meg om. Så min løsning var å skape et annet ark og angi en referanse til hver celle jeg vil.

=sheet1!a1
=sheet1!a8
=sheet1!a15

Men jeg ønsker ikke å skrive i hver av disse formlene ... `100 times.I tenkte at hvis jeg valgte tre og dratt boksen rundt, det ville forstå hva jeg prøver å gjøre, men uten hell.

Noen ideer om hvordan du gjør dette elegant / effektivt?

Publisert på 17/10/2008 klokken 02:18
kilden bruker
På andre språk...                            


8 svar

stemmer
-1

Legg til ny kolonne og fylle det med stigende tall. Deretter filtrere etter ([kolonne] mod 7 = 0) eller noe sånt (ikke har Excel foran meg å faktisk prøve dette);

Hvis man ikke kan filtrere ved formel, legge til én kolonne og bruke formelen = MOD ([kolonne, 7]) i den deretter filtrere nuller, og man vil få alle syvende rader.

Svarte 17/10/2008 kl. 02:35
kilden bruker

stemmer
1

Lag en makro og bruke følgende kode for å ta tak i data og sette den i et nytt ark (Ark2):

Dim strValue As String
Dim strCellNum As String
Dim x As String
x = 1

For i = 1 To 700 Step 7
    strCellNum = "A" & i
    strValue = Worksheets("Sheet1").Range(strCellNum).Value
    Debug.Print strValue
    Worksheets("Sheet2").Range("A" & x).Value = strValue
    x = x + 1
Next

Gi meg beskjed om dette hjelper! JFV

Svarte 17/10/2008 kl. 02:44
kilden bruker

stemmer
119

I A1 på nytt ark, sette dette:

=OFFSET(Sheet1!$A$1,(ROW()-1)*7,0)

... og kopiere ned. Hvis du starter et annet sted enn rad 1, endring ROW () til rad (A1) eller en annen celle i rad 1, deretter kopierer ned igjen.

Hvis du ønsker å kopiere den n'te linje, men flere kolonner, bruke formelen:

=OFFSET(Sheet1!A$1,(ROW()-1)*7,0)

Dette kan kopieres rett også.

Svarte 17/10/2008 kl. 09:01
kilden bruker

stemmer
11

Hvis jeg ble konfrontert med utpakking hver syvende rad jeg ville “sette” en kolonne før Column “A”. Jeg vil da (forutsatt at det er et mål rad i rad 1) inn sifrene 1,2,3,4,5,6,7 i rader 2,3,4,5,6,7,8, jeg ville markere 1,2,3,4,5,6,7 og lim den blokken til slutten av arket (700 rader verdt). Resultatet vil bli 1,23,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7 ....... Nå gjør en data sortere stigende på kolonnen “A”. Etter sortere alle de 1s vil være den første i serien, alle 7-er vil være den syvende element.

Svarte 17/10/2008 kl. 12:23
kilden bruker

stemmer
4

sette inn en ny kolonne, og sette en serie i 1,2,3,4, etc. Deretter opprette en ny kolonne og bruke kommandoen = if (int (a1 / 7) = (a1 / 7), 1,0) bør får en en i hver syvende rad, filtrere kolonnen til en

Svarte 24/11/2012 kl. 08:13
kilden bruker

stemmer
3

Markere syvende linjen. Pensel formatet for de første 7 linjene noen ganger. Deretter må du gjøre en større del av pensel kopiere format før du er ferdig. Hver syvende linjen skal være uthevet. Filtrer etter farge og deretter kopiere og lim (lim verdiene) fra de markerte celler inn i en ny plate.

Svarte 19/12/2013 kl. 17:37
kilden bruker

stemmer
0

Hvis originalen dataene er i kolonne skjema med flere kolonner og den første oppføringen av den opprinnelige data i C42, og du vil at nye (ned-samplet) data for å være i kolonne form også, men bare hver syvende rad, så du vil trenger også å trekke ut radnummeret til den første posten, som så:

=OFFSET(C$42,(ROW(C42)-ROW(C$42))*7,0)
Svarte 30/03/2016 kl. 00:53
kilden bruker

stemmer
11

Etter min mening svarene på dette spørsmålet er for spesifikke. Her er et forsøk på en mer generelt svar med to ulike tilnærminger og et komplett eksempel.

den OFFSETtilnærmingen

OFFSETtar 3 obligatoriske argumenter. Den første er en gitt celle som vi ønsker å oppveie fra. Den neste to er antall rader og kolonner vi ønsker å kompensere (nedover og mot høyre). OFFNETreturnerer innholdet i cellen dette resulterer i. For eksempel, OFFSET(A1, 1, 2)returnerer innholdet i celle C2fordi A1er celle (1,1), og hvis vi legger (1,2)til at vi får (2,3)noe som tilsvarer celle C2.

For å få dette til å gå tilbake hver n'te rad fra en annen kolonne, kan vi gjøre bruk av ROWfunksjon. Når denne funksjonen er gitt noe argument, returnerer den rad nummeret til den aktuelle celle. Vi kan dermed kombinere OFFSETog ROWå lage en funksjon som returnerer hver n'te celle ved å legge til en multiplikator til verdien returnert av ROW. F.eks OFFSET(A$1,ROW()*3,0). Legg merke til bruken av $1i målcellen. Hvis dette ikke blir brukt, vil forskyvnings forskjøvet fra forskjellige celler, og dermed i praksis å tilsette 1til multiplikatoren.

Den ADDRESS+ INDIRECTtilnærming

ADDRESStar to heltall innganger og returnerer adressen / navnet på cellen som en streng. For eksempel, ADDRESS(1,1)tilbake "$A$1". INDIRECTtar adressen til en celle og returnerer innholdet. For eksempel, INDIRECT("A1")returnerer innholdet i cellen A1(den aksepterer også inngang med $sin i det). Hvis vi bruker ROWinne ADDRESSmed en multiplikator, kan vi få adressen til hver n'te celle. For eksempel, ADDRESS(ROW(), 1)i en rad kommer tilbake "$A$1", i rad 2 kommer tilbake "$A$2", og så videre. Så, hvis vi legger dette inne INDIRECT, kan vi få innholdet i hver n-te celler. For eksempel, INDIRECT(ADDRESS(1*ROW()*3,1))returnerer innholdet i hver tredje celle i den første kolonnen når de dras nedover.

Eksempel

Vurder følgende skjermbilde av et regneark. Toppteksten (første rad) inneholder anropet anvendes i radene nedenfor. skriv bildebeskrivelse her Kolonnen Ainneholder våre eksempeldata. I dette tilfellet er det bare positive heltall (opptellingen fortsetter utenfor vist området). Dette er verdier som vi ønsker å få hver tredje av, det vil si, vi ønsker å få 1, 4, 7, 10, og så videre.

Kolonne Binneholder feil forsøk på å bruke OFFSETtilnærming, men hvor vi glemte å bruke $. Som man kan se, mens vi multiplisere med 3, vi faktisk får hver fjerde rad.

Kolonne Cinneholder feil forsøk på å bruke OFFSETtilnærming der vi husket å bruke $, men glemte å trekke fra. Så mens vi får hver tredje verdi, hoppet vi noen verdier (1 og 4).

Kolonnen Dinneholder en korrekt funksjon med OFFSETtilnærming.

Kolonne Einneholder feil forsøk på å bruke ADDRESS+ INDRECTtilnærming, men der vi glemte å trekke fra. Dermed har vi hoppet over noen rader i utgangspunktet. Det samme problemet som med kolonne C.

Kolonnen Finneholder en korrekt funksjon med ADDRESS+ INDRECTtilnærming.

Svarte 26/09/2016 kl. 14:19
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more