[[20210610154333]] 『縦列データの文字数字と図形を別シートの指定した』(yoyo) ページの最後に飛ぶ

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

 

『縦列データの文字数字と図形を別シートの指定した場所に表示させたい』(yoyo)

教えて下さい。

文字や英数字は別シーに表示させられますが同時に図も一緒にがわかりません。

A列に5桁の数字(文字列として保存されている)が約1000件あります

B列にはAの数字に紐づくお客様名が約1000件

C列にも英数字が約1000件

D列にも英数字が約1000件

E列には図(.JPG)が約1000件

このデータを別シートの指定した場所に表示したい

Aは別シートのA1へ
Bは別シートのA3B3へ(A3B3は結合されたセル)
Cは別シートのA2へ
Dは別シートのB1B2へ(B1B2は結合されたセル)
Eは別シートのC1C2へ(C1C2は結合されたセル)

また、同じように列を変えて表示(次のスタートはD1へ)

そして、A列の数字をある場所に入力すると別シートに表示されるようになると嬉しいです。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


図形は図形を貼り付けてあるセルをコピーして貼り付け先のセルにリンクされた図として貼り付けしたら
元セルの画像に変更があった場合でも反映されます
(砂糖) 2021/06/10(木) 16:19

レイアウト提示して説明してください。
 セル結合はなぜ必要なんですか。
 A とか B とかは何ですか。
 列を変えての表示がわかりません。
 ある場所とは何処ですか。
(な) 2021/06/10(木) 16:29

説明が下手くそですみません。こんなんでわかりますか?

レイアウト 元データ
    A   B        C     D   E
1  12345 お客様名1   MB1  987  図形1
2  98765 お客様名2   XZC  456  図形2
3  55555 お客様名3   VBN  JKL  図形3


1000 22222 お客様名1000  HGF  FFF  図形1000

表示させたい番号は98765 別シートレイアウト
    A  B    C  
1 98765

           456    図形2
2  XZC
3 お 客 様 名 2

セル結合はなぜ必要なんですか。必要なんです。
別シートに貼り付けられた形で印刷し荷札となるため各セルで文字の大きさなど変えています。

A とか B とかは何ですか。

Aは上記記載の A列に5桁の数字(文字列として保存されている)が約1000件あります
Bは上記記載の B列にはAの数字に紐づくお客様名が約1000件
の事を言っていました。

列を変えてとは 最初にABC列を使い次はDEF列、その次はGHI列に表示させます。
    D  E    F  
1 55555

           JKL    図形3
2  VBN
3 お 客 様 名 3

ある場所とは 別シートの使っていないセルです。例えばI列まで使っているのでJ列の1行目やK列の1行目

(yoyo) 2021/06/10(木) 17:44


 こんなのは参考になりますでしょうか
 https://www.forguncy.com/blog/20170818_vlookup_picture
(なるへそ) 2021/06/11(金) 10:36

なるへそさん ありがとうございます。

やりたい事は似ていましたが違いました。
(yoyo) 2021/06/11(金) 17:59


項目名はないんですか
(な) 2021/06/11(金) 20:35

なさん 項目名の意味が分からないです。項目名とはどのようなことなのでしょうか?

(yoyo) 2021/06/12(土) 09:02


>その列の項目が何を表すかを指定することです。

    A   B      C   D   E
1  ID    客名      機種  番号  図形名 ← 項目名(適当)
2  12345 お客様名1   MB1  987  図形1
3  98765 お客様名2   XZC  456  図形2
4  55555 お客様名3   VBN  JKL  図形3

表では見出しとも言います。
グラフでは項目名となります。

このように項目名を付けておけばピボットテーブルでの集計やグラフの作成が容易になります。

さらに実施していればスルーしてください。

>やりたい事は似ていましたが違いました。
模索中です。
画像は https://www.forguncy.com/blog/20170818_vlookup_picture の最初のように
一つのセルに張り付けてあるんですよね。

>列を変えてとは 最初にABC列を使い次はDEF列、その次はGHI列に表示させます。
横は3ブロックですが縦はどうなんですか。
別シートレイアウトと同じようなファイルがあったので移植試作中です。(図は別)

(な) 2021/06/12(土) 11:15


なさん ありがとうございます。
項目名は理解いたしました。また、データに項目名はあります。例とほぼ同じ

 一つのセルに張り付けてあるんですよね。 
図は2つのセルにまたがって表示しています。結合はされていません。
C列の1行目と2行目です。2ブロック目はF列、3ブロック目はi列

縦は3行で1ブロックの全9ブロックまであります。

(yoyo) 2021/06/12(土) 14:15


>図は2つのセルにまたがって表示しています。結合はされていません。
    |[A]  |[B]     |[C]|[D]|[E]  
 [1]|12345|富士花子|MB1|987|図形1
 [2]|98765|海川泰平|XZC|456|図形1     
 [3]|55555|日本太郎|VBN|JKL|図形2
 [4]|     |        |   |   |図形2     
 [5]|     |        |   |   |図形3
 [6]|     |        |   |   |図形3     

のように項目に対して図形がずれていくことになりますよね。
これであっていますか。
元テータは項目と図形がそれぞれ対応しているようになっていますけど。
>縦は3行で
3行ではなく3ブロックということですよね
縦3ブロック×横3ブロックの9ブロックでいいですね。

(な) 2021/06/12(土) 15:26


なさん 勘違いしていました。
元データ側は1列になってます。
    |[A]  |[B]     |[C]|[D]|[E]  
 [1]|12345|富士花子|MB1|987|図形1
 [2]|98765|海川泰平|XZC|456|図形2     
 [3]|55555|日本太郎|VBN|JKL|図形3
 [4]|22222|あいうえ|123|ASD|図形4     
 [5]|33333|かきくけ|456|589|図形5
 [6]|56123|さしすせ|JKI|BNM|図形6  
貼付け側では2行にまたがってます。
縦3行9ブロックは、貼付け側の事です。
全部で27ブロックになります。

(yoyo) 2021/06/12(土) 17:18


 大変長らくお待たせしました。

 たまたま果物の画像があったので利用してみました。
 図形1〜3はその画像が入っています。

 【1】図形に名前を付ける
   1) F列に名前を入力する
  2) 名前をコピーする
   3) 画像を選択する
   4) 名前ボックスに貼り付けて Enter を押す。

 シート名 AA

    |[A]  |[B]     |[C]|[D]|[E]   |[F]
 [1]|12345|富士花子|MB1|987|図形1 |りんご   
 [2]|67890|海川泰平|XZC|456|図形2 |メロン   
 [3]|45678|日本太郎|VBN|JKL|図形3 |バナナ   

 【2】数式とブロックのコピー
   1) A1:C4 の外周に罫線を引く。これを1ブロックとする
   2) 数式を入れ終わったら A1:C4 をコピーしていく
   3) 3ブロックまでコピーしたら1〜3ブロックまとめてコピーして
      下の方へ貼り付けていく。
   4) 最後に罫線を削除する
      ※ 罫線は貼り付けするときにセル位置を間違えないようにするためです。

  シート名 BB

    |[A]     |[B]|[C]    |[D]     |[E]|[F]    |[G]     |[H]|[I]
 [1]|   12345|987|りんご |   67890|456|メロン |   45678|JKL|バナナ   
 [2]|MB1     |   |       |XZC     |   |       |VBN     |   |   
 [3]|富士花子|   |       |海川泰平|   |       |日本太郎|   |   

 A2=IF(A1="","",VLOOKUP(A1,AA!$A$1:$D$3,3,0))
 A3=IF(A1="","",VLOOKUP(A1,AA!$A$1:$D$3,2,0))
 B3=IF(A1="","",VLOOKUP(A1,AA!$A$1:$D$3,4,0))

 ※C1は実際はりんごの画像です。以下同じ

 【3】VBE を起動する。(Alt+F11)
  1) 標準モジュール Module1 に次のコードを張り付ける。
  Sub Paste_1() '※1 1ブロック
       Dim aa As String
       Sheets("AA").Select '※2 シート名
       aa = [VLOOKUP(BB!A1,A1:F3,6,0)] '※3 検索値
       ActiveSheet.Shapes(aa).Select
       Selection.Copy
       Range("A1").Select '注
       Sheets("BB").Select '※2 シート名
       Range("C1").Select '※4 画像貼り付け位置
       ActiveSheet.Paste
       Dim c As Range
       Set c = Range("C1") '※4 画像貼り付け位置
       With ActiveSheet.Shapes(aa)
         .Top = c.Top + (c.Height - .Height) / 2 '※5 画像中央配置
         .Left = c.Left + (c.Width - .Width) / 2
       End With
       Range("A1").Select '注
    End Sub

 サイトより引用
 '注 VBAでは、画像や図形のSelectを解除するためのメソッドは設定されていません。
 '注 そのかわり、Selectされている図形の選択を解除するためには適当なセルを
 '注 選択することにより、Selectを解除することができます。

    Sub Paste_2() '※1 2ブロック
       Dim aa As String
       Sheets("AA").Select '※2 シート名
       aa = [VLOOKUP(BB!D1,A1:F3,6,0)] '※3 検索値 D1 に変更
       ActiveSheet.Shapes(aa).Select
       Selection.Copy
       Range("A1").Select '注
       Sheets("BB").Select '※2 シート名
       Range("F1").Select '※4 画像貼り付け位置 F1:CF2 に変更
       ActiveSheet.Paste
       Dim c As Range
       Set c = Range("F1") '※4 画像貼り付け位置 F1:CF2 に変更
       With ActiveSheet.Shapes(aa)
         .Top = c.Top + (c.Height - .Height) / 2 '※5 画像中央配置
         .Left = c.Left + (c.Width - .Width) / 2
       End With
       Range("A1").Select '注
    End Sub
    Sub Paste_3() '※1 3ブロック
       Dim aa As String
       Sheets("AA").Select '※2 シート名
       aa = [VLOOKUP(BB!G1,A1:F3,6,0)] '※3 検索値 G1 に変更
       ActiveSheet.Shapes(aa).Select
       Selection.Copy
       Range("A1").Select '注
       Sheets("BB").Select '※2 シート名
       Range("I1").Select '※4 画像貼り付け位置 I1:I2 に変更
       ActiveSheet.Paste
       Dim c As Range
       Set c = Range("I1") '※4 画像貼り付け位置 I1:I2 に変更
       With ActiveSheet.Shapes(aa)
         .Top = c.Top + (c.Height - .Height) / 2 '※5 画像中央配置
         .Left = c.Left + (c.Width - .Width) / 2
       End With
       Range("A1").Select '注
    End Sub

  2) シート名 入力 を右クリックしてコードの表示をクリックする
    次のコードを張り付ける

     Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)    
       If Not Intersect(Range("C1"), Target) Is Nothing Then '※6 画像を張り付ける位置
          Call Paste_1 '※7 マクロ名
       End If     
       If Not Intersect(Range("F1"), Target) Is Nothing Then
          Call Paste_2
       End If   
       If Not Intersect(Range("I1"), Target) Is Nothing Then
         Call Paste_3
       End If    
     End Sub

 【4】使用方法
  1) 客先番号を入力する → 客先のデータが転記される
    2) 画像貼り付け位置をダブルクリックする → 客先番号の画像が貼り付けられる 
  ※ データの再入力時は画像を消去して再度ダブルクリックすること

 【5】ブロックごとの追加に関して(1ブロックをコピーしていく)
      シート名 BB (画像を張り付けるシート)に対して変更する
     ・※1 1ブロック
       マクロ名は末尾の数字を書き換えてください。 
     ・※2 シート名(1ブロックをコピーしたらあとは必要ない)
       実際のシート名にしてください。
     ・※3 検索値
    客先番号入力セルを指定してください。
     ・※4 画像貼り付け位置
    貼り付けるセルを指定してください。
   ・※6 画像を張り付ける位置
       貼り付けるセルを指定してください。
     ・※7 マクロ名
       マクロ名は末尾の数字を書き換えてください。
 ※※ ここでのシート名は
      レイアウト 元データ → AA
      表示させたい番号は98765 別シートレイアウト → BB
      としています。

 とりあえず3ブロックで試していただいて良ければブロックを追加していただければと思います。
 約1000件あるとのことですので図形の名前については大変だと思いますががんばってください。

 最後に
 サイトで紹介されているもののほとんどが表示切替が主流でした。
 サイトを巡っても今回のケースのようなものに出会うことができませんでした。
 今回はいろいろな面から勉強させてもらいました。
 VBA も苦手なもんですが何とか形にすることができました。


失礼しました。
ニックネーム抜けました。
(な)でした
(な) 2021/06/20(日) 10:21

なさん ありがとうございます。
まだ、試していませんが、こんなに時間をかけ、ご協力頂いた事に感謝です。
本当にありがとうございます。
先ずはやってみます。

(yoyo) 2021/06/21(月) 09:42


 > 約1000件あるとのことですので図形の名前については大変だと思います
名前をつけるだけなら、名前の列と図の列を全部範囲選択して選択範囲から作成(Ctrl+Shift+F3)で
自動的に名前はつけられますが、本当に図(.JPG)が約1000件あるんでしょうか。
それなら、VBAで写真を貼り付けしてるのかな?とか考えてコメントするのに二の足を踏んでしまいますが。

よく似た感じでA4シート21ブロックのもの(図なし)は作ったことがあるので試してみたのですが
(なるへそ)さんが紹介されているサイト

 https://www.forguncy.com/blog/20170818_vlookup_picture
を参考にすればVBAでなくてもできました。

 >文字や英数字は別シートに表示させられますが
こちらはできているとして
 >同時に図も一緒にがわかりません。
こちらのサイトにあるように参照する計算式を画像に設定を27個作らないといけませんが。
一個一個の図に名前を付ける必要はありません。
アイコン画像で試してみて22MBにはなりましたけど。。。
今更ですがご参考になれば。

(檸檬) 2021/06/27(日) 17:03


 >一個一個の図に名前を付ける必要はありません。
 私へのこじつけですか。
(な) 2021/06/27(日) 20:46

 >私へのこじつけですか。
 とんでもございません。
(なるへそ)さんが紹介されているサイトのやり方がそうなので書いただけです。

わたしも、最初に試したやり方は図に名前をつけてからINDIRECTで呼び出していたので。。。
参照する計算式を画像に設定を27個つくるほうが手間だったりしますし。
VBAはわかりませんので。

お気を悪くされませんよう。。。
(檸檬) 2021/06/27(日) 21:24


 もう一度サイトを除いてみました。確かにVBAのVも出てこないですね。
 大変失礼しました。

 一個一個の図に名前を付けた理由は
 【同時に図も一緒にがわかりません。 】これを
 【12345 お客様名1 MB1 987 図形1 (名前)】をワンセットとして 
 お客データと図形を紐づけて VLOOKUP で呼び出すためです。

 トピ主さんがワンセットとして考えているかどうかですけどね。

(な) 2021/06/27(日) 22:17


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.