[[20190120171459]] 『入力に応じて、画像も含めたデータを示す』(いのしし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『入力に応じて、画像も含めたデータを示す』(いのしし)

シート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が勝手にImage1.jpgとかに改名してしまうし、物理的にいろいろ無理です。

画像を貼る行為をマクロで実現し、画像ファイル名をどこかに保持しておくとか、根本的に考え直さないといけないでしょう。

または、単純にオートフィルタでも使って、行表示を絞るとかでは駄目なのでしょうか? 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.