[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入力に応じて、画像も含めたデータを示す』(いのしし)
シート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.