2013-06-14 4 views
3

누군가 Excel이 수식을 조작하는 것처럼 보입니다. 열 A에 색인 값이있는 시트가 있습니다. 첫 번째 행은 0이 아닌 값으로 시작됩니다. 열의 후속 행은 값을 증가시킵니다. Excel VBA는 테이블에서 내 수식을 변경합니까?

A1 = 1000 
A2= A1+ 1 
A3= A2 + 1 

및 예

그래서 그 값 예 공란 또는 화학식 열 A (대개 후속 행)을 가리키는 것 중 다른 칼럼 B가/ 에 :

B1.Formula = "=A2" 
B2.Formula = "=A3" 
B3.Value = "" 
B4.value = "=A6" 

이제 가질을 데이터/수식을 텍스트 파일에 쓰고 다른 통합 문서에서 다시 읽을 수있는 백업 복원 기능. 열 A와 B의 경우 텍스트 값이 "="로 시작하는지 확인한 다음 수식의 유무에 따라 해당 셀의 값이나 수식을 설정합니다.

지금까지 기능이 정상적으로 작동했습니다. 그것은 정확하게 복원 할 수 있습니다.

이제이 데이터 범위를 테이블로 변환하고 그에 따라 코드를 수정하면 동작이 이상합니다. ListObject 구조를 사용하여 테이블을 참조하고 있습니다. 코드를 복원의 나 열 B에 대한 그래서입니다 : 처음에 내가 행을 작성 마쳤하고 일단

If Left(soureString) = "=" Then 
       'This is a formula 
       Sheets("MySheet").ListObjects(1).ListColumns("Next").DataBodyRange(row).Formula = sourcestring 
Else 
       'This is a value 
       Sheets("MySheet").ListObjects(1).ListColumns("Next").DataBodyRange(row).Value = soureString 
End If 

, I 루프

Dim newRow AS listrow 
Set newRow = Sheets("MySheet").Listrows.Add(AlwaysInsert:=False) 
row = newRow.Index 

하지만이 프로세스를 실행하는이 시간. 이것은 내가 얻은 것입니다 :

B1.Formula = "=A5" 
B2.Formula = "=A5" 
B3.Value = "" 
B4.value = "=A5" 

범위 대신 테이블을 사용할 때 내 수식 값이 모두 같은 값으로 변경되는 이유는 무엇입니까?

+1

'Sheets ("MySheet"), ListColumns ("Next")가 아니라'Sheets ("MySheet")가되어야 함 ListObjects (1) .ListColumns ("Next")'? –

+0

@ PeterAlbert – DPD

+0

오류를 지적 해 주셔서 감사합니다. [Excel 테이블의 수식 및 구조화 된 데이터] (http://excelsemipro.com/2011/04/formulas-and-structured-data-in-excel-tables/) 테이블로 변환하는 가장 좋은 점은 더 많은 데이터를 테이블에 추가하면 수식이 자동으로 아래로 복사된다는 것입니다. 이 수식을 변경하면 Excel에서 자동으로 변경 내용을 열의 모든 행에 복사합니다. 그리고 열의 첫 번째 셀을 변경하거나 중간에 셀을 변경하면 열의 모든 행이 수정됩니다. " 이 동작을 변경하는 방법을 잘 모르겠습니다. – User

답변

0

비슷한 문제가 발생했습니다. 이상적으로 당신은 이것을하는 것을 멈추도록 탁월하다고 말할 수는 있었지만 나는 그 방법을 이해할 수 없었습니다. 기발한하고 다음은 수식을 복사에서 엑셀을 유지하도록되어 :

xlApp.AutoCorrect.AutoFillFormulasInLists = false

하지만 나를 위해 작동하지 않았다.

이 질문의 답을 사용하면 How to create running total using Excel table structured references?이 도움이됩니다. 이상적인 솔루션이라고 느끼지는 않지만 그 일을합니다.

나는이 수식을 사용했습니다. Weight은 내 테이블의 열 이름입니다. #This Row은 "특수 항목 지정자"이며 특별한 의미가 있습니다. 그것이라고 무엇 때문에 구문은 약간 펑키 보이는 Structured Reference 다음 [[#This Row],[Weight]] 부분은 현재에 대한 참조를 제공하면서 INDEX([Weight],1) 부분은 체중 열

의 1 행에 대한 참조를 제공

=AVERAGE(INDEX([Weight],1):[[#This Row],[Weight]])

행을 선택하십시오.

그래서 예를 들어, 무게 칼럼 J이고, 현재 행은 7 다음이

=AVERAGE(J1:J7)

동등 말하자면이며 8 행을 그것

에 해당 될 경우

=AVERAGE(J1:J8) 등등

관련 문제