匹配比较数据后删除[已解决]
本帖最后由 jinefo 于 2013-2-26 07:43 编辑求大侠给点思路,想不到什么好的方法处理。问题如下, 只要是第五列是相同的,并且第八列相同等于零,就把它们移除~~先判断第5列相同,然后就判断第8列的数值 一样 如 128+ -128这样,等于0,则删除这两行。
FSZHB1 04 2012-11-22 1348 S000008953 BC14D02100 0 3992 0 0 0 3992
FSZHB1 04 2012-11-22 1552 S000008954 BC14D01599 0 128 0 0 0 128
FSZHB1 04 2012-11-22 1552 S000008954 BC14D99999 0 -128 0 0 0 -128
FSZHB1 04 2012-11-22 1554 S000008955 BC14D99999 0 -1280 0 0 0 -1280
FSZHB1 04 2012-11-22 1554 S000008955 BC14D02097 0 1280 0 0 0 1280
FSZHB1 04 2012-11-22 1907 S000008956 BC14D02087 0 3690 0 0 0 3690
FSZHB1 04 2012-11-22 1907 S000008956 BC14D01796 0 158 0 0 0 158
FSZHB1 04 2012-11-22 1907 S000008956 BC14D01579 0 248 0 0 0 248
FSZHB1 04 2012-11-22 1907 S000008956 BC14D99999 0 -4096 0 0 0 -.4096
FSZHB1 04 2012-11-22 1907 S000008956 BC14D99996 0 10000 0 0 0 10000
FSZHB1 04 2012-11-22 2120 S000008957 BC14D99996 0 -10000 0 0 0 -10000
FSZHB1 04 2012-11-22 2120 S000008957 BC14D99996 0 10000 0 0 0 10000
FSZHB1 04 2012-11-22 2120 S000008957 BC14D01579 0 248 0 0 0 248
FSZHB1 04 2012-11-22 2120 S000008957 BC14D99998 0 -4581 0 0 0 -4581
FSZHB1 04 2012-11-22 2120 S000008957 BC14D01796 0 158 0 0 0 158
FSZHB1 04 2012-11-22 2120 S000008957 BC14D01908 0 14175 0 0 0 14175 排版一下啦 看着累 条件成立: 比如第5列 中有两个 的 S000008954, 然后则判断 第 8 列中的值(128或 -128)两个相加是否等于0也是上面 128 + -128这个为零就删除两行。 第5 列为S000008956的有5行,准备怎么办呢? 回复 4# shqf
这里我都有点晕,不管第5列中有多少行, 那么第8列都能两行的去比较在删除,应该是逐行比较好点。 回复 1# jinefo
不会正则,原则上用正则可以很简单解决,暂扔块砖吧,谁有玉麻烦大量砸过来,再顺便祝大家新年快乐!!
Local $string = _
'FSZHB1 04 2012-11-22 1348 S000008953 BC14D02100 0 3992 0 0 0 3992' & @CRLF & _
'FSZHB1 04 2012-11-22 1552 S000008954 BC14D01599 0 128 0 0 0 128' & @CRLF & _
'FSZHB1 04 2012-11-22 1552 S000008954 BC14D99999 0 -128 0 0 0 -128' & @CRLF & _
'FSZHB1 04 2012-11-22 1554 S000008955 BC14D99999 0 -1280 0 0 0 -1280' & @CRLF & _
'FSZHB1 04 2012-11-22 1554 S000008955 BC14D02097 0 1280 0 0 0 1280' & @CRLF & _
'FSZHB1 04 2012-11-22 1907 S000008956 BC14D02087 0 3690 0 0 0 3690' & @CRLF & _
'FSZHB1 04 2012-11-22 1907 S000008956 BC14D01796 0 158 0 0 0 158' & @CRLF & _
'FSZHB1 04 2012-11-22 1907 S000008956 BC14D01579 0 248 0 0 0 248' & @CRLF & _
'FSZHB1 04 2012-11-22 1907 S000008956 BC14D99999 0 -4096 0 0 0 -.4096' & @CRLF & _
'FSZHB1 04 2012-11-22 1907 S000008956 BC14D99996 0 10000 0 0 0 10000' & @CRLF & _
'FSZHB1 04 2012-11-22 2120 S000008957 BC14D99996 0 -10000 0 0 0 -10000' & @CRLF & _
'FSZHB1 04 2012-11-22 2120 S000008957 BC14D99996 0 10000 0 0 0 10000' & @CRLF & _
'FSZHB1 04 2012-11-22 2120 S000008957 BC14D01579 0 248 0 0 0 248' & @CRLF & _
'FSZHB1 04 2012-11-22 2120 S000008957 BC14D99998 0 -4581 0 0 0 -4581' & @CRLF & _
'FSZHB1 04 2012-11-22 2120 S000008957 BC14D01796 0 158 0 0 0 158' & @CRLF & _
'FSZHB1 04 2012-11-22 2120 S000008957 BC14D01908 0 14175 0 0 0 14175'
$string = StringRegExpReplace($string, '\h+', ' ')
Local $aLine = StringSplit($string, @CRLF, 1)
Local $sFlag = '_____'
Local $aCol, $sOut_Text, $sVarName, $sCheckName
For $a = 1 To $aLine
$aCol = StringSplit($aLine[$a], ' ', 1)
$sVarName = $sFlag & $aCol & '_' & $aCol
Assign($sVarName, 1, 2)
ConsoleWrite('var=' & $sVarName & @CRLF)
Next
For $a = 1 To $aLine
$aCol = StringSplit($aLine[$a], ' ', 1)
If StringInStr($aCol, '-') Then
$sCheckName = $sFlag & $aCol & '_' & StringReplace($aCol, '-', '')
Else
$sCheckName = $sFlag & $aCol & '_-' & $aCol
EndIf
If 0 = IsDeclared($sCheckName) Then $sOut_Text &= $aLine[$a] & @CRLF
Next
$sOut_Text = StringReplace($sOut_Text, ' ', ' ')
ClipPut($sOut_Text)
Exit
回复 6# Qokelate
万一文本中有关于第五列和第八列的重复行怎么办?
如有下面三行,其中第一行和第二行中的第五列和第八列完全相同(而其第6列不同):
1 2 3 4 5 6 78 9...........
------------------------------------------文本-------------------------------------------------
FSZHB1 04 2012-11-22 1552 S000008954 BC14D01599 0 128 0 0 0 128
FSZHB1 04 2012-11-22 1552 S000008954 BC14D01600 0 128 0 0 0 128
FSZHB1 04 2012-11-22 1552 S000008954 BC14D99999 0 -128 0 0 0 -128
-------------------------------------------文本-------------------------------------------------
这时,应该怎么删?三行全删了,还是只删二,三行?
=======================================================
对了,麻烦你看看这个帖的4楼:http://www.autoitx.com/thread-37303-1-1.html
因为搜到你写了跟我问的相关问题
当然更希望能回答我在一楼提的两个问题 回复 7# runsnake
根据LZ要求,是要第五列相同并且第八列相加等0才筛选, 其它既是未提到的要求,自然不进行处理 回复runsnake
根据LZ要求,是要第五列相同并且第八列相加等0才筛选, 其它既是未提到的要求,自 ...
Qokelate 发表于 2013-2-9 11:42 http://www.autoitx.com/images/common/back.gif
你没明白我的意思
我上面给的文本中,第1、3行满足楼主提的两个条件,但第2,3行同样满足这两个条件。这时你是怎么删呢? 这类问题在excel里比较好处理 楼上正解,写入EXCEL后对比 我晕我晕了 这个肯定要高手出手相救了 回复 10# kevinch
大哥,有相关列子吗?过年了,论坛冷清 分类汇总? 这个试下
页:
[1]
2