Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


78 / 13329 ツリー ←次へ | 前へ→

【80586】型が一致しないがわかりません ゆうすけ 19/3/15(金) 17:11 質問[未読]

【80628】Re:型が一致しないがわかりません ゆうすけ 19/3/21(木) 13:17 回答[未読]
【80629】Re:型が一致しないがわかりません マナ 19/3/21(木) 13:39 発言[未読]
【80630】Re:型が一致しないがわかりません ゆうすけ 19/3/22(金) 10:42 回答[未読]
【80631】Re:型が一致しないがわかりません ゆうすけ 19/3/22(金) 12:09 発言[未読]
【80632】Re:型が一致しないがわかりません ピンク 19/3/22(金) 15:09 回答[未読]
【80635】Re:型が一致しないがわかりません マナ 19/3/22(金) 17:52 発言[未読]
【80636】Re:型が一致しないがわかりません ゆうすけ 19/3/25(月) 14:29 お礼[未読]

【80628】Re:型が一致しないがわかりません
回答  ゆうすけ  - 19/3/21(木) 13:17 -

引用なし
パスワード
   ▼マナ さん:

はい!下記のとおりです。
>
>1)C13:C14で商品を選ぶ
>2)K13:K40に英語の商品名を表示(Vlookup)
>3)P13:P40に商品分類の数字(1か2)を表示(Vlookup)
>

マクロに転記したいのはK列の英語の商品名です。

【80629】Re:型が一致しないがわかりません
発言  マナ  - 19/3/21(木) 13:39 -

引用なし
パスワード
   ▼ゆうすけ さん:

では、こんな感じでできそうです。

Option Explicit

Sub test()
  Dim r1 As Range
  Dim c As Range
  Dim n1 As Long
  
  Set r1 = Worksheets("2").Range("E24")

  For Each c In Worksheets("1").Range("K14:K41")
    If c.Value = "" Then Exit For
    
    If c.Offset(, 4).Value = 1 Then
      r1.Offset(n1).Value = c.Value
      n1 = n1 + 1
     Else
      '商品分類2の場合
     End If
  Next
 
End Sub

【80630】Re:型が一致しないがわかりません
回答  ゆうすけ  - 19/3/22(金) 10:42 -

引用なし
パスワード
   ▼マナ さん:

ご回答ありがとうございます!
マナさんのおかげで、無事転記に成功することが出来ました!

しかし、転記は出来たのですが今度はセルを上から詰めて表示することに苦戦しています。

・ワークシート"1"のリストは
K13、K14、K16が商品分類1
K15が商品分類2となっています。

こちらで作った転記のマクロを実行すると
ワークシート"2"の
E24、E25、E27に商品分類1が転記され、E26がブランクという状態になっています。
E24:E49の間にブランクを詰めて分類1の商品名を表記させたいです。

上から順番に表示させるために下記のマクロを作成しました。
ブランクを詰めることは出来ましたが、E2セルから並んでしまい
どこを変更したらよいのか修正点が分からず悩んでおります。
ご依頼ばかりで申し訳ございませんが、マナさんのお力をお借り出来たらとても嬉しいです。
 
Sub Tumeru()
Dim i As Integer, j As Integer
j = 1
For i = 24 To 46
If (Range("E" & i).Rows <> "") Then
j = j + 1
Range("E" & i).Copy Range("E" & j)
Range("E" & i) = ""
End If
Next i
End Sub

【80631】Re:型が一致しないがわかりません
発言  ゆうすけ  - 19/3/22(金) 12:09 -

引用なし
パスワード
   ▼マナさん

下記補足です。
ブランクのセルを詰めて順番に表記する際に
ブランクのセルを削除して詰めることはやりたくありません・・・。
というのも、E24:E49に商品分類1、E56:E59に商品分類2を入力したいため
商品分類1のブランクのセルを削除してしまうと、商品分類2のセルが移動してしまうためです。


>▼マナ さん:
>
>ご回答ありがとうございます!
>マナさんのおかげで、無事転記に成功することが出来ました!
>
>しかし、転記は出来たのですが今度はセルを上から詰めて表示することに苦戦しています。
>
>・ワークシート"1"のリストは
>K13、K14、K16が商品分類1
>K15が商品分類2となっています。
>
>こちらで作った転記のマクロを実行すると
>ワークシート"2"の
>E24、E25、E27に商品分類1が転記され、E26がブランクという状態になっています。
>E24:E49の間にブランクを詰めて分類1の商品名を表記させたいです。
>
>上から順番に表示させるために下記のマクロを作成しました。
>ブランクを詰めることは出来ましたが、E2セルから並んでしまい
>どこを変更したらよいのか修正点が分からず悩んでおります。
>ご依頼ばかりで申し訳ございませんが、マナさんのお力をお借り出来たらとても嬉しいです。
> 
>Sub Tumeru()
>Dim i As Integer, j As Integer
>j = 1
>For i = 24 To 46
>If (Range("E" & i).Rows <> "") Then
>j = j + 1
>Range("E" & i).Copy Range("E" & j)
>Range("E" & i) = ""
>End If
>Next i
>End Sub

【80632】Re:型が一致しないがわかりません
回答  ピンク  - 19/3/22(金) 15:09 -

引用なし
パスワード
   ▼ゆうすけ さん:
>Sub Tumeru()
>Dim i As Integer, j As Integer
>j = 1
>For i = 24 To 46
>If (Range("E" & i).Rows <> "") Then
>j = j + 1
>Range("E" & i).Copy Range("E" & j)
>Range("E" & i) = ""
>End If
>Next i
>End Sub

Sub Tumeru2()
  Dim v As Variant, c As Range, i As Long
  
  With Range("E24:E46")
    ReDim v(1 To .Count)
    For Each c In .Cells
      If c.Value <> "" Then
        i = i + 1
        v(i) = c.Value
      End If
    Next
    .Value = Application.Transpose(v)
  End With
End Sub

【80635】Re:型が一致しないがわかりません
発言  マナ  - 19/3/22(金) 17:52 -

引用なし
パスワード
   ▼ゆうすけ さん:

>E24、E25、E27に商品分類1が転記され、E26がブランクという状態になっています。


間違えました。

If c.Offset(, 5).Value = 1 Then

にしてください。
そして、この行の意味をよく考えてください。
結果がでればよいというものではありません。
理解できていれば、ご自分で修正できます。

さらに、↓は、必要なくなります。

>上から順番に表示させるために下記のマクロを作成しました。

【80636】Re:型が一致しないがわかりません
お礼  ゆうすけ  - 19/3/25(月) 14:29 -

引用なし
パスワード
   ▼マナ さん:

返答が遅くなってしまい申し訳ございません。
マナさんのおかげで無事完成致しました!!
本当にありがとうございました。

78 / 13329 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free