使用Excel,我正在尝试完成以下任务:
我需要将所有的1转换为每列的相应国家/地区名称。对于像上面的示例这样的小型数据集,手动进行起来很容易,但是当我有196列x 2个数据集时,就不那么容易了。任何建议将不胜感激!
答案 0 :(得分:0)
复制工作表并清除除第二个工作表中的标题以外的所有值。在第二页的标题行以外的每个对应的单元格中,添加以下公式。
=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),"")
然后可以复制第二张纸的相应单元格。过去的值进入第一张纸。完成了。
{您将要从公式中删除回车符。另外,您可能想删除第二张纸来隐藏魔术。 :-)}
答案 1 :(得分:0)
如果您愿意使用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