|
▼[名前なし] さん:
今回、転記先は24行目〜(ですよね?)ということがはじめてわかりました。
レイアウト要件については最初から、しっかりと説明いただかないと、回答側としては
実際のシートが見えず、不要なQAを繰り返すことになりますので、次回からは気をつけてくださいね。
まだレイアウト要件に不明なところもあります。
元シートのデータにはE列があるのですが、別シートには転記不要?
また、
>56,78,910,1112の2列を結合して文字が入ってます。
とのことでしたけど、11 12 (K,L) は結合じゃないようですし。
ということで、見えている要件だけでとりあえず。
なお、自動でセットする ○ の図形名として、Auto_Oval_行番号 と名前をセットしています。
Sub Sample()
Dim sp As Shape
Dim shT As Worksheet
Dim shF As Worksheet
Dim x As Long
Dim unitV As Variant
Dim c As Range
Dim z As Variant
Dim i As Long
Dim l As Double
Dim t As Double
Dim w As Double
Dim h As Double
Application.ScreenUpdating = False
Set shF = Sheets("Sheet1") '元シート
Set shT = Sheets("Sheet2") '別シート
x = shF.Range("A" & shF.Rows.Count).End(xlUp).Row - 101 + 1 '転記行数
If x < 1 Then
MsgBox "転記すべきデータがありません"
Exit Sub
End If
'前回の処理でセットされた楕円を削除
For Each sp In shT.Shapes
If sp.Name Like "Auto_Oval_*" Then sp.Delete
Next
'別シート転記欄のクリア
shT.Range("A24").MergeArea.Resize(shT.Rows.Count - 24 + 1).ClearContents
shT.Range("D24").Resize(shT.Rows.Count - 24 + 1).ClearContents
shT.Range("K24").Resize(shT.Rows.Count - 24 + 1).ClearContents
'元シートの情報を別シートに転記
shT.Range("A24").Resize(x).Value = shF.Range("A101").Resize(x).Value
shT.Range("D24").Resize(x).Value = shF.Range("B101").Resize(x).Value
shT.Range("K24").Resize(x).Value = shF.Range("D101").Resize(x).Value
'数量単位配列
unitV = Array(shT.Range("E24").Value, shT.Range("G24").Value, shT.Range("I24").Value)
i = 24 '転記開始行
'元シートのA列を抽出
For Each c In shF.Range("A101", shF.Range("A" & shF.Rows.Count).End(xlUp))
z = Application.Match(c.Offset(, 2).Value, unitV, 0)
If IsNumeric(z) Then
z = (z - 1) * 2 + 5 '転記先数量単位列
With shT.Cells(i, z).MergeArea
l = .Left
t = .Top
w = .Width
h = .Height
End With
With shT.Shapes.AddShape(msoShapeOval, l, t, w, h)
.Fill.Visible = msoFalse
.Name = "Auto_Oval_" & i
End With
End If
i = i + 1
Next
shT.Activate
Application.ScreenUpdating = True
MsgBox "転記終了"
End Sub
>▼UO3 さん:
>何度もすみません。ありがとうございます。
>
>1つのセルに1つ
>
>■ | A | B | C | D | E |
>101|明細1| 3 | kg | 100 | 300 |
>
>こんな感じで入力されたデータを
>
> | ABC | D | EF | GH | IJ | k |
>24| 明細1| 3 | t | kg |リットル| 100|
>(このときkgに丸がついている)
>
>こんな風に出力となります。すでにkgやリットルは書類の雛形に書いてあるため
>データを転載していく流れで特定の文字が入っていたらそれと同じ文字のセルを
>オートシェイプで丸をつけたいのです。
|
|