プロが教えるわが家の防犯対策術!

色々検索やら、考えてみたのですが、解決できずで質問させていただきました。

エクセル2003なのですが、やりたい内容としては

   A    B    
1    1     りんご
2    1     みかん
3    2    すいか
4    1    なし
5    3    いちご
・・・
・・・
・・・


という内容を、別シートに関数でA1から

   A  
1    りんご
2    みかん
3    すいか
4    すいか
5    なし
6    いちご
7    いちご
8    いちご
・・・
・・・
・・・

という形でできればと思っているのですが。

どなたか教えてくださると助かります!!
やはり固定の数字でないと中々難しいでしょうか?ひねっても全然頭にでてきません。。。

A 回答 (6件)

シート1のC1は0でC2セルには次の式を入力し下方にオートフィルドラッグでした。



=IF(B2="","",SUM(A$2:A2))
    • good
    • 3
この回答へのお礼

たびたびご親切にありがとうございます!
希望通りの動きになりました!勉強になります!ありがとうございました!

お礼日時:2011/11/10 10:20

 元データのB列の内容に、重複が無く、且つ、途中には空欄が無い場合には、作業列を使わずとも、次の様な方法があります。



 今仮に、元データが存在しているシートがSheet1であり、結果を表示する別シートのシート名がSheet2であるものとします。
 まず、Sheet2のA1セルに、次の数式を入力して下さい。

=IF(Sheet1!$B$1="","",Sheet1!$B$1)

 次に、Sheet2のA2セルに、次の数式を入力して下さい。

=IF(ROWS($1:2)>SUM(Sheet1!$A:$A),"",IF(COUNTIF(A$1:A1,A1)<INDEX(Sheet1!$A:$A,MATCH(A1,Sheet1!$B:$B,0)),A1,INDEX(Sheet1!$B:$B,MATCH(A1,Sheet1!$B:$B,0)+1)))

 そして、Sheet2のA2セルをコピーして、Sheet2のA3以下に貼り付けて下さい。

 以上です。
「エクセル関数【指定条件で繰り返し】」の回答画像6
    • good
    • 1
この回答へのお礼

いろいろな方法があることにびっくりです。
今回に関しては重複する可能性があるので、ご回答いただきました方法は使用できないですが、作業列が必要ないのはすごくいいですよね。
もっと勉強する必要があると感じました!ありがとうございました!

お礼日時:2011/11/10 10:27

こんばんは!


ご希望の関数ではなく、VBAでの一例です。

Sheet1のデータをSheet2に表示するようにしてみました。
※ Sheet1の1行目はタイトル行でデータは2行目からあるとしています。

画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i As Long
Dim ws As Worksheet
Set ws = Worksheets("sheet2")
Application.ScreenUpdating = False
Columns(2).Copy Destination:=ws.Cells(1, 1)
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If Cells(i, 1) <> 1 Then
ws.Rows(i + 1 & ":" & i + Cells(i, 1) - 1).Insert
End If
Next i
For i = 2 To WorksheetFunction.Sum(Columns(1)) + 1
If ws.Cells(i, 1) = "" Then
ws.Cells(i, 1) = ws.Cells(i - 1, 1)
End If
Next i
Application.ScreenUpdating = True
End Sub 'この行まで

以上、最初に書いたようにご希望の方法でなければ読み流してくださいね。m(_ _)m
    • good
    • 1
この回答へのお礼

すごいですね。。。。マクロの理解ができません。
もっと勉強しないと思わされます。関数をもっとマスターできたら挑戦してみたいと思います!
ありがとうございました!

お礼日時:2011/11/10 10:23

D1セルに =A1


D2セルに
=IF(COUNTA(D$1:D1)>=SUM(A:A),"",
INDEX(B:B,MATCH(D1,B:B,0)+(INDEX(A:A,MATCH(D1,B:B,0))<=COUNTIF(D$1:D1,D1))))
下へオートフィル
D列を切り取って 別シートに貼り付け
指定の個数以上になったら、次の行に移る(+1)
「エクセル関数【指定条件で繰り返し】」の回答画像3
    • good
    • 0
この回答へのお礼

画像までつけていただいてありがとうございます!!
しかし、#N/Aになってしまいました。やり方が間違ってるかもしれないですので、いっこいっこ理解してやってみます!
ありがとうございました!

お礼日時:2011/11/10 10:19

回答No1です。

前回の回答で次のように訂正してください。
シート1の作業列ではC1セルには0を入力して方C2に次の式を入力して下方にオートフィルドラッグします。

=IF(B3="","",SUM(A$2:A3))

別のシートではA2セルに次の式を入力して下方にオートフィルドラッグします。

=IF(ROW(A1)>MAX(Sheet1!C:C),"",IF(COUNTIF(Sheet1!C:C,ROW(A1))=1,INDEX(Sheet1!B:B,MATCH(ROW(A1),Sheet1!C:C,0)),INDEX(Sheet1!B:B,MATCH(ROW(A1),Sheet1!C:C,1)+1)))
    • good
    • 0
この回答へのお礼

追加のご回答いただきまして、ありがとうございます!!
また、別の動きになってしまいました。。一度理解してやってみます!
ありがとうございました!

お礼日時:2011/11/10 10:07

元の表はシート1に有って、A列およびB列の2行目から下方にデータがあるとします。

C列は作業列として次の式をC2セルに入力して下方にオートフィルドラッグします。

=IF(B2="","",SUM(A$2:A2))

お求めの表は別のシートのA2セルから下方に表示させるとしてA2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(ROW(A1)>MAX(Sheet1!C:C),"",IF(COUNTIF(Sheet1!C:C,ROW(A1))=0,A1,INDEX(Sheet1!B:B,MATCH(ROW(A1),Sheet1!C:C,0))))
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます!!
ひとつひとつ調べないと理解ができなさそうですが、同じ様にサンプルで作ってみたのですが、
ひとつ上のセル情報が繰り返し表示になってしまいました。

お礼日時:2011/11/09 18:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!