需要excel公式,单独减去每个数字的数字“9”

时间:2016-05-14 02:12:17

标签: excel excel-formula

我希望你有一些乐趣。我需要具体的东西。

首先,我必须解释一下我的所作所为。我在零售店使用简单的产品价格编码,因为我不希望人们知道自己的实际价格。所以我将原始数字改为另一个,减去每个数字的数字9。 通常我会用每个产品的编码手动记下所有价格。

所以...例如数字10将是89.(9-1 = 8)和(9-0 = 9) 其他例子:

  1. $ 128 = 871
  2. $ 75 = 24
  3. $ 236 = 763
  4. $ 9 = 0
  5. 最后,我还在编码价格的开头加上了2个数字9(9),让那些可能认为数字可能是价格的人感到困惑。

    所以我之前使用的例子是这样的:

    1. 99871(意味着128美元)
    2. 9924(意味着75美元)
    3. 99763(意味着236美元)
    4. 990(意味着9美元)
    5. 请记住,在实际价格之前我需要2(2)个9。实际价格永远不会从0开始,因此,开头的9只存在只是为了让人迷惑。

      确定。那么,既然你明白了,那么第二部分就是这样。 我有一个excel,我添加了数百种产品,价格,描述等。我决定是时候使用打印机并开始从excel打印这些信息。我有一个软件可以做到这一点,但首先我需要在excel中编制成文价格。

      当我想将已经写在我的Excel文档中的实际价格转换为AUTOMATICALLY的新列时,有趣的部分就开始了。因此,我不必再为我将来添加的新旧商品以编码形式再次输入所有价格。

      有人可以帮我吗?它甚至可能吗?

      我尝试使用= A1-9999,但它仅适用于2个字符编号。因为如果实际价格是5,我会得到3个9:9994(代码)。如果价格是234我将只得到1 9 9765(代码)。这是我需要首先获得两个9的条件。

      非常感谢您的进步!

3 个答案:

答案 0 :(得分:0)

我将使用辅助单元格,但如果你愿意,可以将它全部转储到一个单元格中,因为你只处理4个字符。

出于本示例的目的,我假设您的原始价格表在B11开始。

=IFERROR(9-MID($B11,COLUMN(A1),1),"")

将它放在D11中并再向右复制三次,这样你就可以从D11到G11。该公式从您的价格中删除1个字符,并从9中减去该字符。当您转到下一列时,它会自行重复。如果您没有那么多字符,它将返回“”。

在C11中,您将使用以下公式基于相邻的4列建立您的号码:

="99"&D11&E11&F11&G11

它将99放在前面,然后添加相邻4列中的数字。

选择单元格C11至G11,然后在数据栏旁边复制并粘贴到您需要的位置。

另一种更简洁的方法是:

=REPT(9,LEN(B11)+2)-B11

答案 1 :(得分:0)

虽然您已经要求配方,我建议VBA程序在我看来非常方便。 您必须打开VBE并插入模块并复制该程序。更改任何位置的代码行,以满足您对纸张等的要求。

Sub NumberCode()
  Dim c As Range
  Dim LR As Integer
  Dim numProbs As Long
  Dim sht As Worksheet
  Dim s As Integer
  Dim v As Long
  Dim v1 As Long
  Set sht = Worksheets("Sheet1") ' change as per yr requirement
  numProbs = 0
  LR = sht.Cells(Rows.Count, "A").End(xlUp).Row
  For Each c In sht.Range("A1:A" & LR).Cells
    s = Len(c)
    v = c.Value
    v1 = 99
    For s = 1 To Len(c)
      v1 = v1 & (9 - Mid(c, s, 1))
    Next
    c.Offset(0, 1).Value = v1
    v1 = 99
    numProbs = numProbs + 1
   Next
  MsgBox "Number coding finished"
End Sub

结果样本表附于下面。

Sample sheet

答案 2 :(得分:0)

也许我错过了一些东西,尽管只是:

=REPT(9,2+LEN(A1))-A1

对我来说似乎很好。

此致