我有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'002B”的单元格感兴趣。 要求是获取具有以下条件的值列表:
如果在任何C-J列中找到“H'002B”,那么包含“H'002B”的单元格将被转换为该列值的A + Hex。
例如:
第一行F列H'002B应为H'000C78 + H'3 = H'C7B。
我想要的列表应该具有第一个值H'C7B。
苦苦挣扎(通过对所有值使用HEX2DEC然后写入IF语句,如= IF(C1 =“43”,“A1 + 0”))。 感谢任何帮助。
答案 0 :(得分:0)
如果要“替换”替换十六进制值,则必须实现某种VBA。这个简短的例程识别并调整从Sheet1!A1中辐射出来的单元格块中H'002B
的所有出现次数。
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)
通过实现Worksheet_Change事件宏甚至是Workbook_SheetChange事件宏,这可能会进一步自动化,但根据工作表的其余部分正在做什么,它可能不是一个有效的支出资源。