Vba 将每列中的数字更改为每列标题的子字符串
使用Excel,我试图完成以下工作: 之前和之后的样本Vba 将每列中的数字更改为每列标题的子字符串,vba,excel,excel-formula,Vba,Excel,Excel Formula,使用Excel,我试图完成以下工作: 之前和之后的样本 我需要将所有1转换为每列对应的国家名称。对于上面的示例这样的小数据集,手动操作很容易,但当我有196列x2数据集时就不那么容易了。任何建议都将不胜感激 复制工作表并清除第二张工作表中除页眉以外的所有值。将以下公式放入除第二页标题行以外的每个相应单元格中 =IF(INDIRECT(ADDRESS(ROW(),COLUMN(),1,1,"Sheet1"),TRUE)=1, MID(INDIRECT(ADDRESS(1,COLUMN()
我需要将所有1转换为每列对应的国家名称。对于上面的示例这样的小数据集,手动操作很容易,但当我有196列x2数据集时就不那么容易了。任何建议都将不胜感激 复制工作表并清除第二张工作表中除页眉以外的所有值。将以下公式放入除第二页标题行以外的每个相应单元格中
=IF(INDIRECT(ADDRESS(ROW(),COLUMN(),1,1,"Sheet1"),TRUE)=1,
MID(INDIRECT(ADDRESS(1,COLUMN())),
FIND("[",INDIRECT(ADDRESS(1,COLUMN())))+1,
FIND("]",INDIRECT(ADDRESS(1,COLUMN())))-
FIND("[",INDIRECT(ADDRESS(1,COLUMN())))-1),"")
然后可以复制第二张图纸的相应单元格。将过去的值放入第一页。你完了
{您需要从公式中删除回车符。此外,您可能需要删除第二页以隐藏魔术。:-}如果您愿意使用vba而不是公式,我认为这将对您有效。它在
“A:F”
中查找非空单元格,并在[…]
中获取这些单元格的名称
Sub AdjustName()
Dim cell As Range
For Each cell In Range("A2:F" & LastRowInRange_Find(Range("A:F")))
If Len(cell.Value2) > 0 Then
With Cells(1, cell.Column)
cell.Value2 = Mid(.Value2, InStr(.Value2, "[") + 1, Len(.Value2) - 1 - InStr(.Value2, "["))
End With
End If
Next cell
End Sub
Function LastRowInRange_Find(ByVal rng As Range) As Long
'searches range from bottom up looking for "*" (anything)
Dim rngFind As Range
Set rngFind = rng.Find( _
What:="*", _
After:=Cells(rng.row, rng.Column), _
LookAt:=xlWhole, _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If Not rngFind Is Nothing Then
LastRowInRange_Find = rngFind.row
Else
LastRowInRange_Find = rng.row
End If
End Function
如果你想把它放在适当的位置,那么公式就不能做到。尝试使用此选项和循环查看列标题以查找国家/地区名称,然后您可以使用已识别的国家/地区名称查找/替换1。“如果您想将其放置到位,则公式将无法执行此操作”@Scott Craner Right。公式不能在适当的地方实现。但是自定义数字格式可以@很明显,我对自定义格式感兴趣,该格式可以满足选项的要求wants@Scott在单独的单元格中输入1 0 R-1创建自定义数字格式。在类型字段中,输入“Horse”;“理查德”;“驴子”;“打孔”点击并返回工作表观察结果。另外,它们仍然是数字,所以马+理查德=驴。您还可以使用[>=6]“Sallie”之类的条件。遗憾的是,Sallie说,这种方法将输出限制为4个选项,但您可以使用自定义格式添加更多选项。只需使用新的自定义数字格式,而不是传统的颜色更改。