[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入力に応じて、画像も含めたデータを示す』(いのしし)
シートA
のA1、34とか4A、などを入力します。
シートBにはデータがあって、
a b c 1 34 4A 7B 2 1 3 1 1 4 5 1 5 1 7 8 1 1 ・ ・ ・ 40 となっています。
シートCでは画像がjpgで貼り付けられていて、
a b c d 1 画像1 画像11 画像21 画像31 3 5 7 9 11 13 15 17 19 画像10 画像20 画像30 画像40
となっています。
そこで、シートAの入力が4Aだとすると、
d列 F列
3行 3 画像3
5行 5 画像5
7行 8 画像8
などと、シートBで1と入力されている部分の
画像番号と画像を関数で表示させたいのです。
よろしくお願いいたします。
< 使用 Excel:Excel2007、使用 OS:Windows8 >
画像を貼る行為をマクロで実現し、画像ファイル名をどこかに保持しておくとか、根本的に考え直さないといけないでしょう。
または、単純にオートフィルタでも使って、行表示を絞るとかでは駄目なのでしょうか? Excelにできないことを頑張って実現しようとするより、できることで簡単に実現しましょうよ。
(???) 2019/01/21(月) 09:07
下記を応用してできないだろうか? 数字だけの名前は付けられないので_1、_2という名前を付けて。
http://officetanaka.net/excel/function/tips/tips14.htm
(ねむねむ) 2019/01/21(月) 09:43
画像1とか画像2のほうがわかりやすいか。 ところで4Aは画像2、画像4、画像7ではないのか? 画像3、画像5、画像8だとすると画像1を選択することができないと思うが。 (ねむねむ) 2019/01/21(月) 09:51
画像ファイル名は予めどこかに書き出しておかないと無理なので諦めて、画像をコピーするのも面倒なので諦めて、対象外の行と列を非表示にする事で目的の画像だけ残す、という考え方です。 シートCは2行おきになっているようなので、2行ずつ非表示処理。
【シートA】 Private Sub Worksheet_Change(ByVal Target As Range) Dim wkB As Worksheet Dim wkC As Worksheet Dim cw As String Dim i As Long Dim j As Long Dim iMax As Long Dim jMax As Long
If Target.Address <> "$A$1" Then Exit Sub
Set wkB = Sheets("シートB") Set wkC = Sheets("シートC")
Application.ScreenUpdating = False iMax = wkB.Cells(1, wkB.Columns.Count).End(xlToLeft).Column cw = wkB.Cells.SpecialCells(xlCellTypeConstants).Address jMax = Mid(cw, InStrRev(cw, "$") + 1)
For i = 1 To iMax If Target.Text = wkB.Cells(1, i).Text Then wkC.Cells.EntireRow.Hidden = False wkC.Cells.EntireColumn.Hidden = False For j = 1 To jMax If i <> j Then wkC.Columns(j).Hidden = True End If Next j For j = 2 To jMax If wkB.Cells(j, i).Text = "" Then wkC.Rows(j * 2 - 3 & ":" & j * 2 - 2).Hidden = True End If Next j End If Next i Application.ScreenUpdating = True wkC.Activate End Sub
【シートC】 Private Sub Worksheet_Deactivate() Cells.EntireRow.Hidden = False Cells.EntireColumn.Hidden = False End Sub (???) 2019/01/21(月) 17:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.