如何取相同项的最后一次值

示例说明:A列是料号列,只需要取重复项的最后一行数据,例如B料号是取黄色行数据。

该实例可用于公司BOM表中取最近日期数据

 

源数据

源数据

 

 

结果

结果

VBA代码:

Sub test()
Dim cn As Object, sql$
Set cn = CreateObject("ADODB.Connection")
Sheet2.[a1:d65536].ClearContents
cn.Open "provider=microsoft.jet.oledb.4.0;" & _
        "extended properties='excel 8.0;hdr=no';" & _
        "data source=" & ThisWorkbook.FullName
sql = "select f1,last(f2),last(f3),last(f4) from [sheet1$] group by f1"
Sheet2.[a1].CopyFromRecordset cn.Execute(sql)
cn.Close
Set cn = Nothing
End Sub

http://blog.youkuaiyun.com/laoyebin/article/details/5293142

### Java 中去除数组重复元素的方法 #### 使用 `HashSet` 去除重复元素 通过利用集合类的特点来处理数组中的重复项是一个高效的方式。`HashSet` 不允许存储重复的键,因此当把数组元素加入到 `HashSet` 后再转换回数组时,所有的重复项都会自动消失。 ```java import java.util.Arrays; import java.util.HashSet; public class RemoveDuplicates { public static int[] removeDuplicate(int[] array) { HashSet<Integer> set = new HashSet<>(); for (int i : array) { set.add(i); } int[] resultArray = new int[set.size()]; int index = 0; for (Integer num : set) { resultArray[index++] = num; } return resultArray; } public static void main(String[] args) { int[] originalArray = {1, 2, 2, 3, 4, 4, 5}; System.out.println("Original Array: " + Arrays.toString(originalArray)); int[] noDuplicationArray = removeDuplicate(originalArray); System.out.println("After removing duplicates: " + Arrays.toString(noDuplicationArray)); } } ``` 这种方法简单易懂,并且性能较好,适合大多数场景下的需求[^1]。 #### 利用 `HashMap` 实现去重操作 另一种方式是采用 `HashMap` 来记录已经遇到过的数及其唯一性状态。对于每一个读到的新数,在将其存入哈希表之前先检查它是否已经在里面;如果是第一次遇见,则标记为有效(true),反之则置位无效(false)。最后只保留那些被标记有效的形成新的无重复列表。 ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class DuplicateRemovalWithMap { public static List<Integer> filterUniqueElements(Integer[] inputArray){ HashMap<Integer, Boolean> map = new HashMap<>(); // 遍历输入数组填充map for (Integer element : inputArray) { if (!map.containsKey(element)) { map.put(element, true); // 表示这个数字首次出现 } else { map.put(element, false); // 如果再次碰到相同的数字设置其为false表示不是唯一的 } } // 收集所有唯一性的element组成list返回 List<Integer> resultList = new ArrayList<>(); for (Integer key : map.keySet()) { if (map.get(key).booleanValue()){ resultList.add(key); } } return resultList; } public static void main(String[] args) { Integer[] data = {1, 2, 2, 3, 4, 4, 5}; System.out.println(filterUniqueElements(data)); } } ``` 此方法不仅能够移除重复条目,还可以保持原始顺序不变(决于使用的具体实现),并且能区分哪些元素确实只出现了单次[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值