ID非公開

2022/1/18 12:59

44回答

エクセル、VBA等にて出来るかどうか、出来る場合その方法等をご教授ください。 現在 Aさん 10,000 10,000 10,000 Bさん 10,000

補足

VBAにて出来るとのことありがとうございました。 ではどのようにプログラムを書けばいいでしょうか。 お力添えいただければ幸いです。

Excel | Visual Basic88閲覧xmlns="http://www.w3.org/2000/svg">250

ベストアンサー

0
画像

ThanksImg質問者からのお礼コメント

この度は皆様ご回答ありがとうございました。 本当に感謝しております。 同シート内で出来るということでこちらを選ばせていただきました。

お礼日時:1/26 19:47

その他の回答(3件)

0

マクロでの例です。 Sub Sample() Dim sh1 As Range, sh2 As Range Dim buf As Range, hai() Dim n As Long, cnt As Long 'データ元 Set sh1 = Sheets("Sheet1").Range("A1").CurrentRegion '転記先 Set sh2 = Sheets("Sheet2").Range("A1") Set sh1 = sh1.Offset(, 1).Resize(, sh1.Columns.Count - 1) n = sh1.SpecialCells(xlCellTypeConstants).Count ReDim hai(1 To n, 1 To 2) For Each buf In sh1 If buf.Value <> "" Then cnt = cnt + 1 hai(cnt, 1) = Cells(buf.Row, "A") hai(cnt, 2) = buf.Value End If Next buf sh2.Resize(n, 2).Value = hai End Sub

画像
0

マクロで対応しなくとも次のように作業列を作って対応すればよいでしょう。 元の表がシート1のA2セルから下方に名前、その横方向のセルには10000などの数値がB列からH列までにお示しのように並んでいるとします。 そこで作業列ですが例えばJ1セルには0を入力してからJ2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNT(B2:H2)=0,"",MAX(J$1:J1)+COUNT(B2:H2)) その後にお求めの表をシート2に作るとします。 シート2のA2セルには次の式を入力してB2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーすればよいでしょう。 =IF(ROW(A1)>MAX(Sheet1!$J:$J),"",IF(COLUMN(A1)=1,INDEX(Sheet1!$A:$A,MATCH(ROW(A1)-0.1,Sheet1!$J:$J,1)+1),IF(COLUMN(A1)=2,INDEX(Sheet1!$B:$H,MATCH(ROW(A1)-0.1,Sheet1!$J:$J,1)+1,ROW(A1)-INDEX(Sheet1!$J:$J,MATCH(ROW(A1)-0.1,Sheet1!$J:$J,1))),""))) なお、シート1の作業列が目障りでしたらその列を選択して「非表示」にすればよいでしょう。

0

VBAだったらできるでしょ。

①データを配列などに格納 ②出力用のシートを作成もしくは ブックを作成 ③ループ内で配列の中身をチェックしながら出力 これでよいのでは? 詳細な実データも 出力の仕方も質問内容からは、わからないので やり方だけ書いておきます。