[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでデータ作成』(カメ)
エクセルのマクロを勉強中です。ほとんど使ったことがありません。
sheet2 A(選択リストになってます) 新規
再発行
無効
sheet2 B 大阪
京都
奈良
Sheet2 C りんご
いちご
ばなな
sheet2 D (選択リストになってます) 田中
鈴木
佐藤
sheet2 E 田中君
鈴木君
佐藤君
sheet1のA2に無効以外のデータがあった場合、sheet1をコピーする。
sheet2でA1が無効以外であった場合、sheet2 Bをsheet1のAに、sheet2 Cをsheet1のDに貼り付ける。
sheet2 Cの重複チェック。重複があった場合、sheet2 Cの値はEにも貼り付ける。(大阪 りんご 大阪 いちごであった場合、Dにりんご Eにいちごと隣の行へ追加でペーストしていく)
sheet2のDで田中が選択された場合、sheet1のBに"田中君"と表示、同じように、鈴木を選択した場合、"鈴木君"と表示
説明がわかりづらく申し訳ないのですが、どのようにすればよいかお教えいただけないでしょうか。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
>sheet1のA2に無効以外のデータがあった場合、sheet1をコピーする。
どこに貼り付けるんですか? それとも「何かをsheet1にコピーする」の意味ですか?
Sheet2 AとはA列のことですか? レイアウトの形で掲示していただくと分かり易いのですけども。
(半平太) 2017/05/11(木) 07:30
>>sheet1のA2に無効以外のデータがあった場合、sheet1をコピーする。 >どこに貼り付けるんですか? >それとも「何かをsheet1にコピーする」の意味ですか?
sheet1が出力用のsheetになります。
>Sheet2 AとはA列のことですか? >レイアウトの形で掲示していただくと分かり易いのですけども。
<Sheet1> 行 __A__ ___B___ ___C___ ___D___ ___E___ 1 大阪 田中君 りんご いちご りんご
<別sheet> 行 __A__ ___B___ ___C___ ___D___ ___E___ 1 奈良 鈴木君 いちご
<別Sheet> 行 __A__ ___B___ ___C___ ___D___ ___E___ 1 京都 佐藤君 ばなな
<Sheet2> 行 ___A___ __B__ ___C___ __D__ 1 再発行 大阪 りんご 田中 2 無効 大阪 ばなな 田中 3 新規 奈良 いちご 鈴木 4 再発行 大阪 りんご 田中 5 新規 京都 ばなな 佐藤
上記のようなイメージになります。わかりづらく申し訳ございません。
(カメ)2017/05/11(木) 08:29
> <別sheet> 「別Sheet」とは、Sheet1の別の姿と言う意味ですね?
昨日、マナさんが同じような案件に回答していましたので、それを拝借します。 [[20170509130254]] 『Dictionary』(xy)
※Bの大阪とDの田中が一致していないと面倒なことになる気がしますが、そんな事態は無いとの前提とします。
Sub test()
Dim dic As Object Dim c As Range Dim KeyWord, valToShow Dim Ws1 As Worksheet, Ws2 As Worksheet
Set Ws1 = Sheets("Sheet1") Set Ws2 = Sheets("Sheet2")
Set dic = CreateObject("scripting.dictionary")
KeyWord = Ws1.Range("A1").Value
For Each c In Ws2.Range("A1", Ws2.Range("A" & Rows.Count).End(xlUp)) If c.Value <> "無効" And c.Value <> "" Then If KeyWord = c.Offset(, 1).Value Then If Not dic.exists(KeyWord) Then dic(KeyWord) = c.Offset(, 3).Value & "君" & "#!#" & c.Offset(, 2).Value Else dic(KeyWord) = dic(KeyWord) & "#!#" & c.Offset(, 2).Value End If End If End If Next
Ws1.Rows(1).ClearContents Ws1.Range("A1").Value = KeyWord
If dic.Count = 1 Then valToShow = dic.Items valToShow = Split(valToShow(0), "#!#") Ws1.Range("B1").Resize(1, UBound(valToShow) + 1) = valToShow End If End Sub
(半平太) 2017/05/11(木) 09:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.