[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『分類1で重複した行を条件を指定して削除したい』(さかえ)
3つの条件を指定して行を削除できますでしょうか?
条件1:分類1が重複
条件2:分類2が重複
条件3:個数が少ない
品名__個数__分類1__分類2
砂糖 3 調味料 雑貨
コーヒー 4 嗜好 雑貨
みかん 4 フルーツ 柑橘
夏みかん 2 フルーツ 柑橘
メロン 3 フルーツ 果物
菜っ葉 6 野菜 葉物
ジャガイモ2 野菜 根菜
< 使用 Excel:Office365、使用 OS:Windows10 >
_|____A_____|___B____|___C____|___D____|___E____ 1|品名 |個数 |分類1 |分類2 | 2|砂糖 | 3|調味料 |雑貨 | FALSE =IF(COUNTIFS(C:C,C2,D:D,D2)>1,B2) 3|コーヒー | 4|嗜好 |雑貨 | FALSE 4|みかん | 4|フルーツ|柑橘 | 4 5|夏みかん | 2|フルーツ|柑橘 | 2 ← 個数が少ない 6|メロン | 3|フルーツ|果物 | FALSE 尚、消すのは手動で... 7|菜っ葉 | 6|野菜 |葉物 | FALSE 8|ジャガイモ| 2|野菜 |根菜 | FALSE
(白茶) 2022/06/23(木) 13:13
Dim MR As Long
Dim MC As Long
Dim DP As Long
MR = Cells(Rows.Count, 1).End(xlUp).Row '最終行,A:A
MC = Cells(1, Columns.Count).End(xlToLeft).Column '1:1,最終列
DP = 3
Range(Cells(1, 1), Cells(MR, MC)).Sort _ Key1:=Cells(1, DP), Order1:=xlAscending, _ Header:=xlYes
Dim j As Long With Cells(2, DP) For j = .CurrentRegion.Rows.Count To 1 Step -1 If .Offset(j, 0) = .Offset(j - 1, 0) Then .Offset(j, 0).EntireRow.Delete Next j End With (さかえ) 2022/06/23(木) 14:09
>条件3:個数が少ない これは「最も少なかった行」という解釈でOKか? また、複数行該当した場合の措置は?
とりあえず、 そこは明確になさった方が宜しいかと思われます。
(白茶) 2022/06/23(木) 16:03
あらら。そうでしたか。 んじゃ、私はこれで御暇します。
Sub せっかくなのでCOUNTIFS使ってみたよ() Dim d As Range, v As Variant, i As Long, t As Range Set d = Intersect([A:D], [A1].CurrentRegion) If d.Rows.Count < 3 Then Exit Sub With d.Columns(d.Columns.Count + 1).Resize(, 2) .Columns(1).FormulaR1C1 = "=IF(COUNTIFS(C[-2],RC[-2],C[-1],RC[-1])>1,RC[-3])" .Columns(2).FormulaR1C1 = "=RC[-1]=MIN(C[-1])" v = .Columns(2).Value .Clear End With For i = 2 To d.Rows.Count If v(i, 1) Then If t Is Nothing Then Set t = d.Rows(i) Else Set t = Union(t, d.Rows(i)) Next If t Is Nothing Then Exit Sub t.EntireRow.Select '.Delete End Sub
(白茶) 2022/06/23(木) 18:00
(もこな2 ) 2022/06/23(木) 19:55
_|____D_____|__ _G___|__ _J____|___M____|______
1|品名 | 個数 | 分類1 | 分類2 | 2|砂糖 | 3| 調味料 | 雑貨 | 3|コーヒー | 4| 嗜好 | 雑貨 | 4|みかん | 4| フルーツ| 柑橘 | 5|夏みかん | 2| フルーツ| 柑橘 | 6|メロン | 3| フルーツ| 果物 | 7|菜っ葉 | 6| 野菜 | 葉物 | 8|ジャガイモ | 2| 野菜 | 根菜 |
理解不足でどこをどう直してよいやら解りません。
大変お手数ですが、上記「列」で再度コードをお示し頂くことは可能でしょうか?
何卒よろしくお願いいたします。
(さかえ) 2022/06/24(金) 15:10
Sub テキトー() Range("H2:H8").Formula = "=IF(MAXIFS($E$2:$E$8,$F$2:$F$8,F2,$G$2:$G$8,G2)>E2,""←この行削除"","""")" End Sub
(もこな2 ) 2022/06/24(金) 17:47
Sub テキトー改() Range("N2:N8").Formula = "=IF(MAXIFS($G$2:$G$8,$J$2:$J$8,J2,$M$2:$M$8,M2)>G2,""←この行削除"","""")" End Sub
(もこな2 ) 2022/06/24(金) 17:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.