如果满足条件,Excel将替换单元格值
我的excel工作表有许多行,如下所示:如果满足条件,Excel将替换单元格值,excel,Excel,我的excel工作表有许多行,如下所示: A B C(0) D(1) E(2) F(3) G(4) H(5) I(6) J(7) H'000C78:......):H'001D:H'002D:H'002D:H'002B:H'002B:H'002B:H'002B:H'002B: H'000C80:......):H'002B:H'002B:H'002B:H'002B:H'002B:H'002B:H'002B:H'002B: 我只对值为“H'
A B C(0) D(1) E(2) F(3) G(4) H(5) I(6) J(7)
H'000C78:......):H'001D:H'002D:H'002D:H'002B:H'002B:H'002B:H'002B:H'002B:
H'000C80:......):H'002B:H'002B:H'002B:H'002B:H'002B:H'002B:H'002B:H'002B:
我只对值为“H'002B”的单元格感兴趣。
要求获得具有以下条件的值列表:
如果在任何列C-J中发现“H'002B”,则包含“H'002B”的单元格将转换为该列值的+十六进制
例如:第1行F列H'002B应变为H'000C78+H'3=H'C7B 我想要的列表的第一个值应该是H'C7B 为此苦苦挣扎(对所有值使用HEX2DEC,然后编写一个IF语句,比如=IF(C1=“43”,“A1+0”))。
感谢您的帮助。如果您想“就地”替换十六进制值,则必须实现某种VBA。这个简短的例行程序识别并调整从活页1放射出的单元格块内出现的所有
H'002B
!A1
Sub addHexColumn()
Dim fnd As String, fndr As Range
fnd = "H'002B"
With Worksheets("sheet1")
With .Cells(1, 1).CurrentRegion
Set fndr = .Cells.Find(What:=fnd, LookIn:=xlValues, LookAt:=xlWhole)
Do While Not fndr Is Nothing
fndr = "H'" & Application.Dec2Hex(Application.Hex2Dec(Split(.Cells(fndr.Row, 1).Value2, Chr(39))(1)) + (fndr.Column - 3), 4)
Set fndr = .FindNext(after:=fndr)
Loop
End With
End With
End Sub
这大致相当于将以下公式应用于F1
="H'"&DEC2HEX(HEX2DEC(RIGHT(A1,4))+COLUMN(F1)-3, 4)
这可能会随着事件宏或甚至事件宏的实现而进一步自动化,但取决于工作表的其余部分在做什么,这可能不是一种有效的资源消耗
addHexColumn子列之前的示例数据
添加HexColumn sub后的样本数据编辑您的问题,将您的“挣扎”(工作与否)包括在内,或许我们可以提供帮助。我已经写下了我尝试的内容。请帮忙。为什么F1值会变成H'002E?我预计它会变成H'C78+H'2B=H'ca3似乎数学是错的。等效工作表公式的哪一部分不正确?你能纠正VBA代码来补偿吗?数学没有错。我认为这个公式只是做H'2B+H'3=H'2E。如果公式可以更改为H'2B+H'C78=H'CA3。我尝试了vba,但工作簿每次都挂起。因此公式应该是
=“H'”&DEC2HEX(HEX2DEC(RIGHT(A1,4))+列(F1)-3,4)
,其中它从第一列获取十六进制值。在这种情况下,数学中的fndr.Value2
应该是.Cells(fndr.Row,1).Value2
。