こんにちは。
以下のようなことをしたいときに、使える関数またはマクロがあればお助け頂けないでしょうか。
シート1には名前列(A列)と個数列(B列)があります。
Aさん,3
Bさん,2
Cさん,1
・
・
・
というイメージです。
次にシート2に以下のように表を作成したいです。
Aさん
Aさん
Aさん
Bさん
Bさん
Cさん
・
・
・
シート1の個数列にある数字の数の分セルを作成し、
且つそこに氏名を入れたいです。
手作業でやるには人数が多すぎ、困っております。
何かの関数でできないかと色々試そうとしていますが、
良い案が浮かびません。
お力をお貸し頂けると大変助かります。
よろしくおねがいします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
> 使える関数またはマクロがあれば
関数もマクロもどこかに転がっている訳じゃありません。「ありますか」という訊き方
はどうかと思います。この処理ができないということは おそらく VBAの知識は皆無で
すよね? 「できないからマクロ」という発想は捨てて欲しいと思います。
......A.......B....C.......D........E
1...氏名...回数...6...行番号...氏名
2...Aさん...3.....3......2.....Aさん
3...Bさん...2.....1......2.....Aさん
4...Cさん...1.....0......2.....Aさん
5............................3.....Bさん
6............................3.....Bさん
7............................4.....Cさん
■C1セル
=B2+C2
C4セルまでコピー
■D2セル
=IF(C$1<ROW(D1),"",MATCH(C$1-ROW(D1)+1,C$1:C$4,-1)+1)
■E2セル
=IF(D2="","",INDEX(A:A,D2))
D2:E2セルを下方向に好きなだけコピー
No.3
- 回答日時:
こんばんは!
>何かの関数でできないかと色々試そうとしていますが・・・
一案です。
↓の画像のようにSheet2のC列以降を作業用のセルとして使用します。
C1セルに
=IF(Sheet1!$B1<COLUMN(A1),"",ROW()*1000+COLUMN())
という数式を入れ、列・行方向にずぃ~~~!っと広めにフィルハンドルでコピー!
A1セルに
=IFERROR(INDEX(Sheet1!A:A,INT(SMALL($C:$Z,ROW(A1))/1000)),"")
という数式を入れフィルハンドルで下へコピー!
これで画像のような感じになります。
>手作業でやるには人数が多すぎ
となるとやはりVBAですかね!
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から
Dim i 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
wS.Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(.Cells(i, "B")) = .Cells(i, "A")
Next i
End With
wS.Rows(1).Delete
End Sub 'この行まで
※ Sheet2のA列に数式が入っている場合、マクロを実行すると数式は消えてしまいます。
別Sheetでマクロを試してみてください。m(_ _)m
No.2
- 回答日時:
>何かの関数でできないかと色々試そうとしていますが、良い案が浮かびません。
関数の場合は計算途中の値を次のセルへ引き継げませんので代わりに作業用テーブルを使う方法で目的の処理が出来ます。
例えばSheet2のB列を作業用テーブルとして使用すると次のような処理になります。
Sheet2のA列の先頭はSheet1のA列の先頭とします。
Sheet2のB列の先頭はSheet1のB列の先頭の値から1を減じた値とします。
Sheet2!A1=Sheet1!A1
Sheet2!B1=Sheet1!B1-1
Sheet2!A2=IF(B1,A1,INDEX(Sheet1!A:A,MATCH(A1,Sheet1!A:A,0)+1,1))
Sheet2!B2=IF(B1,B1-1,VLOOKUP(INDEX(Sheet1!A:A,MATCH(A1,Sheet1!A:A,0)+1,1),Sheet1!A:B,2)-1)
Sheet2!A2:B2を下へ必要数コピーすれば目的通りになるでしょう。
No.1
- 回答日時:
マクロで行った方が簡単です。
#まぁ、わけもわからずやらされるという意味では、マクロでも複雑な数式でも一緒かもしれませんが。。。
手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける
sub macro1()
dim r as long
dim n as long
worksheets("Sheet2").range("A:A").clearcontents
worksheets("Sheet2").range("A1") = "NAME"
for r = 1 to worksheets("Sheet1").range("A65536").end(xlup).row
for n = 1 to worksheets("Sheet1").cells(r, "B").value
worksheets("Sheet2").range("A65536").end(xlup).offset(1) = worksheets("Sheet1").cells(r, "A").value
next n
next r
end sub
Sheet1のA,B列に、ご相談に書かれている通りに1行目からいきなりデータを記入する
Sheet2を用意する
ALT+F8を押してマクロを実行する。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの関数について 3 2022/11/13 23:47
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報