- ベストアンサー
リスト順位通りに画像も並べ替えるマクロ
- 質問文章の要点は、業務でリストの順位に合わせて画像を並べ替えたいということです。
- 現在は手動で並べ替えているため、マクロを使ってこの作業を自動化したいとのことです。
- 質問者のファイルは結果シートとdataシートに分かれており、dataシートに順位表を貼り付けています。また、同着を同じ列に並べることも可能であれば行いたいとのことです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
画像のセルにデータがあるとして以下のような方法でいかがですか。 実際の数値は本来の場所に合わせてください。 また画像がない場合の処置はしていません。 Sub Test() Dim SName As String Dim i As Long, j As Long j = 1 For i = 8 To 11 SName = Sheets("data").Cells(i, "D").Value With Sheets("結果").Shapes(SName) .Top = Cells(j, "A").Top .Left = Cells(j, "A").Left End With j = j + 1 Next End Sub
その他の回答 (2)
- masnoske
- ベストアンサー率35% (67/190)
結果シートのフォームを多少変更しても良いのであれば、以下のページにINDEX関数とMATCH関数を使って画像を表示する方法が紹介されています。 https://www.forguncy.com/blog/20170818_vlookup_picture
- imogasi
- ベストアンサー率27% (4737/17069)
ワークシート上に画像を並べたいということか。 (1)画像のLeft値、 Topを値を、Heightの値や余白を考慮して位置を計算して決めるか、 (2)各セルの行の高さをバラバラにしたり、変えない前提で 例えばRange("B5").Topといった位置に頼るか2通りある。 しかし、これは初心者の課題ではない。エクセルのコアな使い方には入らないだろう。 ーー しかしWEBを調べればすぐ http://officetanaka.net/excel/vba/tips/tips174.htmhttp://officetanaka.net/excel/vba/tips/tips174.htm のように判る話。 後者は上記に載っている Sub Macro5() ActiveSheet.Pictures(1).Top = Range("B3").Top ActiveSheet.Pictures(1).Left = Range("B3").Left End Sub のようなやり方。 ーーー Sub Macro9() With ActiveSheet.Pictures.Insert("C:\Work\Sample1.jpg") .Top = Range("B3").Top .Left = Range("B3").Left .Width = Range("B3:C3").Width End With End Sub とあるのが挿入までのコード。 ーー まず「りんご」「みかん」などの画像ファイル名を、割り出せるようにシート (品名のある行の同行に)、データ作っておくのが、普通だろう。 そして順位に従って、行的に等間隔(?)の同列のセルに置いてゆく荷が普通だろう。その際は、算数の「数列」の考えを使う必要があろう。第n位はどのような行に来るか計算できるかな?画像のサイズにばらつきがあればどうする?