Avatar billede qave Nybegynder
12. september 2003 - 14:24 Der er 23 kommentarer og
2 løsninger

macro: hvis celle ikke er tom

Hej,

Jeg skal bruge en macro der skriver:
(værdien af "A1" +5) i "C1" hvis "B1" ikke er tom. Næste række.

Der er X antal rækker.
Avatar billede overchord Nybegynder
12. september 2003 - 14:26 #1
skriv i C1:
= if(B1<>"",A1+5,"")
Avatar billede overchord Nybegynder
12. september 2003 - 14:26 #2
denne kan du saa kopiere nedad
Avatar billede qave Nybegynder
12. september 2003 - 14:31 #3
Tak! - men det er en macro jeg skal bruge, da det skal gøres vær uge på 5 excelark med mange 1000 rækker i vær.

P.S.: Det er Excel 2000
Avatar billede jkrons Professor
12. september 2003 - 14:36 #4
Hvordan ved du (makroen) hvor  mange rækker der er? Står de alle fortløbende, altså uden tomme rækker mellem? kommer der flere rækker under, som der ikke skal skrives i?
Avatar billede overchord Nybegynder
12. september 2003 - 14:37 #5
ok

lav to subs. Den ene skal koere flg princip

sub CopyDown (NoRows)

dim i as integer

for i = 1 to norows
    if range("b" & i) <>"" then
          range("c" & i) = range("a" & i) + 5
    end if
next i

end sub


I den anden sub korer du saa arkvalg og antal raekker

f.eks

sub Runemall()

sheet1.select
Module1.CopyDown(5000)
sheet2.select
Module1.CopyDown(15000)

end sub

Begge koder kna laegges i samme modul (her kaldet Module1)
Avatar billede thor.ostergaard Nybegynder
12. september 2003 - 14:39 #6
Her har du en løkke der selv finder ud af hvor mange celler der er.

  Range("A1").Select
  Do Until IsEmpty(ActiveCell)
    ... den kode der skal køre på den enkelte linje ...
    ActiveCell.Offset(1,0).Select
  Loop
Avatar billede aheiss Praktikant
12. september 2003 - 14:41 #7
eller bare
Sub summer()
Application.ScreenUpdating = False
For a = 1 To InputBox(antalrækker)
If Cells(a, 2) = "" Then
Cells(a, 3) = Cells(a, 1) + 5
End If
Next
End Sub
Avatar billede aheiss Praktikant
12. september 2003 - 14:43 #8
Omvendt sføli :
Sub summer()
Application.ScreenUpdating = False
For a = 1 To InputBox(antalrækker)
If Cells(a, 2) <> "" Then
Cells(a, 3) = Cells(a, 1) + 5
End If
Next
End Sub
Avatar billede qave Nybegynder
12. september 2003 - 14:43 #9
jkrons: de er alle fortløbende, og uden tomme rækker mellem! Der kommer ikke flere rækker under.
Avatar billede jkrons Professor
12. september 2003 - 14:48 #10
Prøv med:

Sub IndsætVærdi()
If IsEmpty(Range("b1")) Then
For Each c In ActiveSheet.UsedRange.Columns("c:c").Cells
c.Value = Range("a1") + 5
Next c
End If
End Sub
Avatar billede aheiss Praktikant
12. september 2003 - 14:49 #11
eller :
Sub summer()
Application.ScreenUpdating = False
For a = 1 To 60000
If Cells(a, 1) = "" Then
Exit Sub
ElseIf Cells(a, 2) <> "" Then
    Cells(a, 3) = Cells(a, 1) + 5
End If
Next
End Sub
Prøv med:
Avatar billede bak Forsker
12. september 2003 - 14:56 #12
jkrons-> skulle den ikke have set sådan ud ?  :-)
Sub IndsætVærdi()
For Each c In ActiveSheet.UsedRange.Columns("c:c").Cells
If IsEmpty(Range("b1")) Then c.Value = Range("a1") + 5
Next c
End If
End Sub
Avatar billede bak Forsker
12. september 2003 - 14:57 #13
Sorry sikke da noget fjollet noget at skrive, jeg læste jo ikke spm. :-(((
Avatar billede jkrons Professor
12. september 2003 - 14:59 #14
:-)
Avatar billede bak Forsker
12. september 2003 - 15:14 #15
Denne indsæter formlen =A1+5 i kolonne c, hvis B er tom

Sub indsætværdi2()
Range(Cells(1, 1), Cells(Range("a64000").End(xlUp), 1)).Offset(0, 2).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC[-2]+5"
End Sub
Avatar billede aheiss Praktikant
12. september 2003 - 15:15 #16
Jeg kan ikke få jkrons til at virke uden at korrigere til :
Sub IndsætVærdi()
If IsEmpty(Range("b1")) Then
For Each c In ActiveSheet.UsedRange.Columns("b:b").Cells
Dim a As Range
Set a = Range(c.Address)
If c.Value <> "" Then
    a(1, 2) = a(1, 0) + 5
End If
Next c
End If
End Sub
Avatar billede bak Forsker
12. september 2003 - 15:16 #17
Jeg må stoppe for idag. jeg bliver ved med at vrøvle. Glem mine indlæg 
Hvorfor er der ikke en edit-funktion her så man kan redigere sine indlæg eller slette dem......
Avatar billede jkrons Professor
12. september 2003 - 15:33 #18
bak-> Sådan en savner jeg også.

aheiss-> Din version tester om b-cellen i hver række er tom, men det blev der ikke bedt om. Spørgsmålet gik på at indsætte i alle rækker, hvis B1 ikkevar tom., ikke b i de enkelte rækker.
Og det gør min løsning.
Avatar billede aheiss Praktikant
12. september 2003 - 15:37 #19
jkrons - OK sådan læser jeg det ikke. Jeg synes det er et eksempel fra række 1, som så også skal gælde i række 2 osv. I din kode vil du i øvrigt altid indsætte samme tal, nemlig A1 + 5
Avatar billede bak Forsker
12. september 2003 - 15:53 #20
Sådan. Nu "tror" jeg at det er rigtigt

Sub IndsætVærdi()
Range(Cells(1, 1), Cells(Range("a64000").End(xlUp), 1)).Offset(0, 1). _
      SpecialCells(xlCellTypeBlanks).Offset(0, 1).FormulaR1C1 = "=RC[-2]+5"
End Sub
Avatar billede jkrons Professor
12. september 2003 - 16:10 #21
Ja, altid det samme tal, for jeg opfattede det ikke som et eksempel.
Avatar billede qave Nybegynder
15. september 2003 - 08:36 #22
1000 tak for hjælpen alle sammen!

jkrons -> bak og aheiss har ret i at eksemplet kun gælder første række.

Det jeg skulle bruge, var en kombo af thor.ostergaard's og aheiss' (14:43:08) svar. Hvis i opretter nogle svar får i points.
Avatar billede thor.ostergaard Nybegynder
15. september 2003 - 08:56 #23
Det er lidt svært når du allerede har accepteret et svar.
Syntes i øvrigt, at alle der har bidraget bør have points.
Avatar billede qave Nybegynder
15. september 2003 - 09:05 #24
Det er jeg ked af - det er første gang jeg bruger systemet, jeg accepterede med 5 og 15 points og troede at jeg kunne gi´ resten senere. :-(

Nu ved jeg det.

De bedste hilsner
Q
Avatar billede jkrons Professor
15. september 2003 - 09:07 #25
thor.ostergaard-> Du kan bare få nogen af de point, jeg har fået. Jeg havde jo alligevel misforstået spørgsmålet.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester