2017-05-17 6 views
1

私は1列に3つの値の間のパーセント差を見つけて、新しい列にコード3つの値

Lets say I have the following values to compare: 
**Value1** = 5 
**Value2** = 8 
**Value3** = 2 

をパーセント差を転送する間のパーセントの差を決定し、私はvalue1とVALUE3から値2を減算する必要がありますValue3からValue1を減算する必要があります。

3つの値の中で最大値を見つけ、残りの2つの値を減算して2番目に高い値を見つけ出し、最も低い値を差し引いてパーセント差を見つける簡単な方法をお勧めします。

おそらく私はこのすべてに間違っています。どんな助けでも大歓迎です。

****CODE***** 

import openpyxl 
from openpyxl.worksheet.datavalidation import DataValidation 

wb = openpyxl.load_workbook('05.16.17 CaMKII Sean RD.xlsx', read_only= False, data_only = True) 


sheet = wb['Sheet1'] 

### Protein Max Value for Triplicate 

for i in range(2,3): 
    sheet['D{}'.format(i)] = '=max(C2:C4)'.format(i) 
for i in range(2,3): 
    sheet['E{}'.format(i)] = '=((D2-C2)/(D2+C2) * 100)'.format(i) 
for i in range(3,4): 
    sheet['E{}'.format(i)] = '=((D2-C3)/(D2+C3) * 100)'.format(i) 
for i in range(4,5): 
    sheet['E{}'.format(i)] = '=((C3-C2)/(C2+C3) * 100)'.format(i) 


wb.save('camdatapolishedoutput.xlsx') 
+1

あなたは 'LARGE(n)は'範囲で最大のn番目の値を返すために –

+1

使っ 'sheet.cell(行= xで、COL = Y)' –

答えて

1

私ははっきりとあなたのコードを理解していなかったが、あなたはFormatPercent式を探しているように思えます。また、コードの多くの部分を変更する必要があります。ここで私はそれらの多くを修正しましたが、あなたが本当にやろうとしていることがわからない限り、残りはあなたのものになります。末尾の%文字と FormatPercentがパーセンテージでフォーマットされた式を返します(つまり、100を乗じて):あなたはので、100を掛けする必要はありません。この式で

Dim wb as Workbook, sheet as Worksheet 
Dim wsArrD2 As Range, wsArrC2 As Range, wsArrC3 As Range, wsArrC4 As Range 
Dim yourdesktopaddress as String 
yourdesktopaddress = CreateObject("WScript.Shell").specialfolders("Desktop") 
Set wb = Application.Workbooks.Open(yourdesktopaddress & "\05.16.17 CaMKII Sean RD.xlsx") 
''This code finds your Desktop address and opens the specific file. 

Set sheet = wb.Sheets("Sheet1") 
'I assume you were looking for information from that file's Sheet1 sheet. 

Set wsArrD2 = sheet.Range("D2") 
Set wsArrC2 = sheet.Range("C2") 
Set wsArrC3 = sheet.Range("C3") 
Set wsArrC4 = sheet.Range("C4") 

Dim maxC as Long, PercentVar1 as String 
Dim PercentVar2 as String, PercentVar4 as String 
'You should define your '%' variables as String otherwise you will get an Run Time 13 Error' 

maxC = Evaluate("=MAX(C2:C4)") 
PercentVar1 = FormatPercent((wsArrD2 - wsArrC2)/(wsArrD2 + wsArrC2), 2) 
PercentVar2 = FormatPercent((wsArrD2 - wsArrC3)/(wsArrD2 + wsArrC3), 2) 
PercentVar3 = FormatPercent((wsArrC3 - wsArrC2)/(wsArrC3 + wsArrC2), 2) 

For more info please visit FormatPercent Function (Visual Basic) on msdm.microsoft

+1

を使用することができますありがとう、@Mertinc – applestooragnes

関連する問題