Google sheets 在带有随机数据的逗号分隔行中查找重复值
非常感谢您的帮助,因为我已经为此挣扎了一段时间,无法找到解决方案 我有一个Google Sheets文件,根据所附的屏幕截图,数据以逗号分隔,分为两列 两列的屏幕截图 屏幕截图中的文本:Google sheets 在带有随机数据的逗号分隔行中查找重复值,google-sheets,duplicates,Google Sheets,Duplicates,非常感谢您的帮助,因为我已经为此挣扎了一段时间,无法找到解决方案 我有一个Google Sheets文件,根据所附的屏幕截图,数据以逗号分隔,分为两列 两列的屏幕截图 屏幕截图中的文本: soon,son,so,on,no N/A kind,kid,din,ink,kin,in dink sing,sign,sin,gin,in,is gis
soon,son,so,on,no N/A
kind,kid,din,ink,kin,in dink
sing,sign,sin,gin,in,is gis,ins,sig,gins
farm,arm,ram,far,mar,am arf
may,yam,am,my N/A
tulip,lip,lit,pit,put,tip piu,pul,til,tui,tup,litu,ptui,puli,uplit
gift,it,if,fit,fig gif,git
hear,are,ear,hare,era,her hae,rah,rhea
dish,his,is,hi,hid dis,ids,sidh
trip,pit,rip,tip,it N/A
wife,few,if,we fie
thaw,what,hat,at haw,taw,twa,wat,wha
red,deer,reed ere,dee,ree,dere,dree,rede
as,save,vase,sea ave,sae,sev,vas,aves
from,for,form,of,or fro,mor,rom
won,now,on,own,no N/A
sport,port,spot,post,stop,sort,top,opt,pot,pro tor,sotrot,ops,tors,tops,trop,pots,opts,rots,pros,prost,strop,ports
我希望在另一列中有一个公式来显示这两列中是否有重复的值
提前感谢您的帮助。。。已经好几个星期没有成功了哈哈首先将数据放在Excel工作表的A和B列中。然后运行以下简短的VBA宏:
Sub report()
Dim rng As Range, r As Range, c As Collection, K As Long
Set rng = Range("A1:B17")
Set c = New Collection
K = 1
For Each r In rng
arr = Split(r.Value, ",")
For Each a In arr
On Error Resume Next
c.Add a, CStr(a)
If Err.Number <> 0 Then
Err.Number = 0
Cells(K, "C").Value = a
K = K + 1
End If
On Error GoTo 0
Next a
Next r
Range("C:C").RemoveDuplicates Columns:=1, Header:=xlNo
Set c = Nothing
End Sub
子报告()
尺寸rng作为范围,r作为范围,c作为集合,K作为长度
设置rng=范围(“A1:B17”)
集合c=新集合
K=1
对于rng中的每个r
arr=拆分(r.值,“,”)
对于arr中的每个a
出错时继续下一步
c、 增加一项,集体安全技术审查(a)
如果错误号为0,则
错误号=0
单元格(K,“C”)。值=a
K=K+1
如果结束
错误转到0
下一个
下一个r
范围(“C:C”)。移除的重复列:=1,标题:=xlNo
设置c=无
端接头
如果您的Excel for Windows O365具有
UNIQUE
和FILTERXML
功能,则重复项将显示在列C中
如果你想把两列结合起来,就好像它们是一块数据一样,
然后尝试:=UNIQUE(FILTERXML("<t><s>" & SUBSTITUTE(TEXTJOIN("</s><s>",TRUE,$A$1:$A$17,$B$1:$B$17),",","</s><s>") & "</s></t>","//s[.=following-sibling::*]"))
=UNIQUE(FILTERXML(“&SUBSTITUTE(TEXTJOIN(“,TRUE,$A$1:$A$17,$B$1:$B$17),”,“,”,”)&“//s[…=以下同级::*]”)
如果这不是您想要的,请澄清您的问题。解决方案
我从您的问题中了解到的是:您想知道在两个不同列的单元格之间是否有以逗号分隔的单词匹配
对于这个解决方案,我已经使用了。下面的注释代码将在两列之间找到匹配的单词。此外,由于使用的函数是一个onEdit()
触发器,它将自动检测这些列中的任何更改,并自动查找新的匹配项或不再存在的匹配项,并更新单元格C1
的值:
函数onEdit(){
//获取当前工作表
var sheet=SpreadsheetApp.getActive().getActiveSheet();
//从我们的列中获取值。这将返回一个二维数组,该数组被展平为
//一维数组,然后将其转换为一个字符串,其元素在该字符串中被分隔
//通过逗号和空格删除(例如,使a与空格+a匹配)
var colA=sheet.getRange('A1:A2').getValues().flat().join().replace(/\s/g');
var colB=sheet.getRange('B1:B2').getValues().flat().join().replace(/\s/g');
//创建两个数组,其中每个元素都是由其原始数组中的逗号分隔的单词
//串
var ArrayA=colA.split(',');
var ArrayB=colB.split(',');
//在这两个数组中查找匹配项并返回这些匹配项
var matchingValues=ArrayA.filter(value=>ArrayB.includes(value));
//将C1的值设置为筛选器在两列之间匹配的单词
//联接用于显示匹配数组的所有匹配元素
sheet.getRange('C1').setValue(matchingValues.join());
}
您已经尝试了什么?感谢您的考虑和。好吧,我已经尝试了COUNTIF、COUNTIFS和和公式在不同的博客中的不同变体,等等。但到目前为止,似乎我唯一能做到的是,如果行完全相同,则返回TRUE或FALSE值。在我的例子中,行永远不会相同…我添加了屏幕截图中的文本。因为这个问题与“谷歌表单”无关,谢谢你,卢克。非常感谢!不确定这两列中的值是否重复。是否查看两列中每个单元格中的每个子字符串以查找重复项?就一个牢房?同一行的单元格?什么版本的Excel?考虑到您提供的数据,您的输出是什么。为什么标题中有谷歌表单,而标签中没有呢?谢谢Ron的帮助!我在早些时候的评论中提到,我正在谷歌表单上构建这个。。。不幸的是,这个公式不起作用,但它似乎正是我想要实现的@IulianOlaru我提供了这个,因为您最初没有将googlesheets
作为标记包含在您的问题中。好吧,工作表
没有与FILTERXML
等效的功能,因此此解决方案不适用于您。是的,对不起,Ron,关于堆栈的第一个问题。。。我在标题和问题中写了谷歌表格。。。我不认为我也必须把它写成标签。诚恳的道歉。嘿,加里,这肯定行得通,但我正试图在谷歌表单上实现这一点……顺便说一句,我在苹果数字版的macOS上。。。我知道数字不能读VBA。。。抱歉,如果这是复杂的:-)有一个类似的脚本语言谷歌表,我会看看以后。非常感谢你加里。。。这可能是一个救命恩人!嘿,加里,你有办法解决这个问题吗?非常感谢。