プロが教える店舗&オフィスのセキュリティ対策術

.  A    B 
1 あいう  2
2 かきく  1
3 さしす  4

sheet1に上記表があるとき、sheet2に

  A
1 あいう
2 あいう
3 かきく
4 さしす
5 さしす
6 さしす
7 さしす

というようにsheet1 A列をB列回数コピペするマクロ、または関数を教えてください。

質問者からの補足コメント

  • うーん・・・

    組んだマクロを教えていただけないでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/08/02 12:36

A 回答 (4件)

こんにちは



無謀にも関数でチャレンジしてみました。(笑)

元データのあるシートをSHeet1と仮定し、A列にデータ、B列に繰り返し回数が記されているものとします。

繰り返して表示したいセルの一番上(=ご質問文ではSHeet2のA1セル)に
=IF(ROW(A1)>SUM(Sheet1!$B$1:$B$100),"",INDEX(Sheet1!$A$1:$A$100,MIN(IF(SUBTOTAL(9,OFFSET(Sheet1!$B$1,0,0,ROW(Sheet1!$A$1:$A$100)))>=ROW(A1),ROW(Sheet1!$A$1:$A$100)))))

の式を入れて、Ctr+Shift+Enterで確定。(←配列数式なので必須です)
そのセルを下方にフィルコピーで可能と思います。
    • good
    • 10

No.1です。



失礼ながら質問者様にかわってマクロを作成することはしていません。

No.1の投稿から16分後の補足投稿。
当方には質問者様がNo.1の内容を理解し、自分なりに考えてわからなかったので、、、という投稿という風には思えません。
つまり他の者から示されたアルゴリズム(の概要)を理解するなり、それをベースに自分なりに考えるなりしておられるようには見えない、、、ということです。
ソースコードという最終的な答えのみを欲し、いかにしたら求める機能を実現できるかを考えようとしない方に答えを示しても、それは単なる「おまじない」でしかないと当方は考えていますので答えを示すことはいたしません。
    • good
    • 0

こんにちは!



VBAでの一例です。
標準モジュールにしてください。

Sub Sample1()
 Dim i As Long, cnt As Long
 Dim myRow As Long, wS As Worksheet
  Set wS = Worksheets("Sheet2")
   wS.Range("A:A").ClearContents
    With Worksheets("Sheet1")
     For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
      If .Cells(i, "B") > 0 Then
       Do Until cnt = .Cells(i, "B")
        cnt = cnt + 1
        myRow = myRow + 1
        wS.Cells(myRow, "A") = .Cells(i, "A")
       Loop
      End If
       cnt = 0
     Next i
    End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1

一発実行できる関数はありません。

マクロを組むことになります。

で、ご自身で処理手順を考えて見られるとよいです。
処理手順は日常使用している言語(日本語)で考えるのでVBAを知らなくても可能です。
例えば。。。

1.各変数を初期化する
 sheet1の行ポインターを0とする
 sheet2の行ポインターを0とする

2.sheet1の1行目から以下の処理を繰り返す
 (1) A列のセルの値を読み込む
 (2) 読み込んだ値が空であったら3.を実行する
 (3) B列のセルの値を読み込む
 (4) (1)で読み込んだ値をsheet2のA列に、(3)で読み込んだ回数だけ、sheet2の行ポインターが指すセルにこのポインターの値を1加えながら繰り返しコピーする

3.sheet2を表示する(アクティベートする)

あとはこれはVBAに翻訳するわけですが、「こういうことをVBAでしたい」というのが具体的に日本語で示されていますから調べやすい(勉強しやすい)はずです。
なお、上記の2.-(4)はもう少し具体的な処理にブレークダウン(=細分化)した方が翻訳しやすいでしょう。

参考まで。
この回答への補足あり
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A