복사/붙여넣기 후 Excel의 자동 셀 참조 변경을 비활성화하려면 어떻게 해야 합니까?
지금 작업 중인 Excel 2003 스프레드시트가 엄청 많아요.셀 참조가 많은 매우 큰 공식들이 많이 있습니다.여기 간단한 예가 있습니다.
='Sheet'!AC69+'Sheet'!AC52+'Sheet'!AC53)*$D$3+'Sheet'!AC49
대부분은 저것보다 더 복잡하지만, 이것으로 내가 어떤 일을 하고 있는지 알 수 있다.이러한 셀 참조 중 절대($s)은 거의 없습니다.셀 레퍼런스를 변경하지 않고 이 셀을 다른 장소에 복사할 수 있으면 좋겠습니다.f4를 사용하여 참조를 절대화할 수 있지만 데이터가 많아서 나중에 Fill을 사용해야 할 수도 있습니다.copy-paste/fill에서 cell reference 변경을 절대 reference를 만들지 않고 일시적으로 비활성화할 수 있는 방법이 있습니까?
편집: 방금 VBA를 사용하여 셀 내용을 수식이 아닌 텍스트로 복사하면 이 작업을 수행할 수 있다는 것을 알게 되었습니다.행/열을 한 번에 모두 복사하고 싶기 때문에 이 작업을 수행하지 않아도 됩니다.제가 놓치고 있는 간단한 해결책이 있나요?
http://spreadsheetpage.com/index.php/tip/making_an_exact_copy_of_a_range_of_formulas_take_2 에서 :
- Excel을 수식 뷰 모드로 합니다.가장 쉬운 방법은 +를 `누르는 것입니다(이 문자는 "후진 아포스트로피"이며 일반적으로 ~(칠데)가 있는 키와 동일합니다).
- 복사할 범위를 선택합니다.
- +C 를 누릅니다.
- Windows 메모장 시작
- + V를 눌러 복사한 데이터를 메모장에 붙여넣습니다.
- 메모장에서 +를 A누른 다음 C+를 눌러 텍스트를 복사합니다.
- Excel을 활성화하고 수식을 붙여넣을 왼쪽 상단 셀을 활성화합니다.복사하려는 시트가 수식 보기 모드인지 확인합니다.
- + V를 눌러 붙여넣습니다.
- +를 `눌러 수식 보기 모드를 종료합니다.
주의: Excel로의 붙여넣기 조작이 올바르게 동작하지 않는 경우는, 최근 Excel의 Text-to-Columns 기능을 사용하고 있을 가능성이 있습니다.Excel은 데이터를 마지막으로 해석한 방법을 기억함으로써 도움이 됩니다.텍스트를 열로 변환 마법사를 시작해야 합니다.구분 옵션을 선택하고 다음을 클릭합니다.탭을 제외한 모든 구분 기호 옵션 체크 표시를 지웁니다.
또는 http://spreadsheetpage.com/index.php/tip/making_an_exact_copy_of_a_range_of_formulas/ 에서 다음 정보를 얻을 수 있습니다.
If you're a VBA programmer, you can simply execute the following code:
With Sheets("Sheet1")
.Range("A11:D20").Formula = .Range("A1:D10").Formula
End With
매우 후 Replace검색 및 치환)를 입니다.Ctrl + h의 변경=되지 않는 공에사사른른른른른른른른른른른른른른른른른른른른예예예예예:#) - 이 되지 합니다.) - 이 되지 않도록 합니다.
그런 다음 선택한 범위를 복사하여 새 위치에 붙여넣습니다.
마지막으로 Replace change]를합니다.#으로 =원래 범위와 새 범위 모두에서 두 범위를 다시 공식으로 복원합니다.
저는 셀 레퍼런스를 변경하지 않고 쉽게 복사할 수 있는 방법을 찾아 이 사이트에 왔습니다.그러나 지금은 대부분의 방법보다 자신의 해결 방법이 간단하다고 생각합니다.내 방법은 복사가 참조를 변경하지만 이동은 변경되지 않는다는 사실에 의존합니다.여기 간단한 예가 있습니다.
A 및 B 열에 원시 데이터가 있고 C에 공식(예: C=A+B)이 있고 F 열에 동일한 공식이 있지만 C에서 F로 복사하면 F=D+E가 발생한다고 가정합니다.
- C의 내용을 빈 임시 열(예: R)에 복사합니다.상대 참조는 R=P+Q로 변경되지만 오류로 플래그가 지정되더라도 무시됩니다.
- C로 돌아가서 F로 이동합니다(복사하지 않음).F=A+B이므로 공식은 변경되지 않아야 합니다.
- 이제 R로 이동하여 C로 다시 복사합니다.상대 참조는 C=A+B로 돌아갑니다.
- R의 임시 수식을 삭제한다.
- 밥은 네 삼촌이야.
저는 다양한 세포로 이 작업을 수행해 왔기 때문에 거의 어떤 수준의 복잡함에서도 작동한다고 생각합니다.당신은 단지 그 세포들을 주차할 빈 공간이 필요합니다.그리고 물론 당신은 그것들을 어디에 두었는지 기억해야 합니다.
다음과 같은 간단한 방법이 효과적입니다.복사하여 붙여넣기.자르고 붙이지 마십시오.붙여넣기 후 복사한 부품을 다시 선택하고 EDIT로 이동한 후 CLEAR로 슬라이드하여 CLEAR CONTENS를 지웁니다.
방금 비슷한 상황에서 사용한 간단한 해결 방법:
- 워크시트를 복제합니다.
- Cut + 을 사용하여 "Cut +" + "Caste").
Copy of Sheet1워크시트에 를 원래 워크시트에 넣습니다. - 수식에서 의 모든 를 들어 "는 "find-and-replace"는 "find-and-replace"를 의미합니다.
'Copy of Sheet1'!빈 문자열(예: 빈 문자열)을 사용합니다. - 정리할 중복 워크시트를 삭제합니다.
주의: 시트 이름에 공백이 없는 경우 작은따옴표/어포스트로피(')를 사용할 필요가 없습니다.
이제 셀 참조가 변경되지 않고 복사됩니다.
편집에서 언급한 해결 방법이 계속 남아 있는 것 같습니다.
먼저 시트의 모든 식을 대략 다음과 같은 텍스트로 변환합니다.
Dim r As Range
For Each r In Worksheets("Sheet1").UsedRange
If (Left$(r.Formula, 1) = "=") Then
r.Formula = "'ZZZ" & r.Formula
End If
Next r
서, 「」는'ZZZ는 을 합니다.'과 을 ZZZ텍스트를 수식으로 변환할 때 찾을 수 있는 값입니다. ZZZ 이렇게 바꿔주세요.ZZZ 으로 변경하다
재배열이 완료되면 텍스트를 다음과 같은 공식으로 다시 변환합니다.
For Each r In Worksheets("Sheet1").UsedRange
If (Left$(r.Formula, 3) = "ZZZ") Then
r.Formula = Mid$(r.Formula, 4)
End If
Next r
이 방법의 진정한 단점 중 하나는 재배열 중에 어떤 공식의 결과도 볼 수 없다는 것입니다.하면, 의 문장이 수 .#REF예를 들어 오류입니다.
단계별로 작업하고 수식으로 자주 변환하여 재해가 발생하지 않았는지 확인하는 것이 좋습니다.
일반적으로 조작을 수행하는 동안 Find/Replace를 사용하여 수식을 비활성화합니다.예를 들어, 전치(transpose)를 사용하여 복사합니다.일부 자리 표시자("$="와 같은)를 자리 표시자 앞에 배치하면 공식이 비활성화됩니다.Find replace는 조작이 완료되면 이를 제거할 수 있습니다.
이 vba는 활성 시트의 검색/교체를 자동화합니다.
' toggle forumlas on active sheet as active/ inactive
' by use of "$=" prefix
Sub toggle_active_formulas()
Dim current_calc_method As String
initial_calc_method = Application.Calculation
Application.Calculation = xlCalculationManual
Dim predominant As Integer
Dim c As Range
For Each c In ActiveSheet.UsedRange.Cells
If c.HasFormula Then
predominant = predominant + 1
ElseIf "$=" = Left(c.Value, 2) Then
predominant = predominant - 1
End If
Next c
If predominant > 0 Then
For Each c In ActiveSheet.UsedRange.Cells
On Error Resume Next
If c.HasFormula Then
c.Value = "$" & c.Formula
End If
Next c
Else
For Each c In ActiveSheet.UsedRange.Cells
On Error Resume Next
If "$=" = Left(c.Value, 2) Then
c.Formula = Right(c.Value, Len(c.Value) - 1)
End If
Next c
End If
Application.Calculation = initial_calc_method
End Sub
이 매크로는 모든 작업을 수행합니다.
Sub Absolute_Reference_Copy_Paste()
'By changing "=" in formulas to "#" the content is no longer seen as a formula.
' C+S+e (my keyboard shortcut)
Dim Dummy As Range
Dim FirstSelection As Range
Dim SecondSelection As Range
Dim SheetFirst As Worksheet
Dim SheetSecond As Worksheet
On Error GoTo Whoa
Application.EnableEvents = False
' Set starting selection variable.
Set FirstSelection = Selection
Set SheetFirst = FirstSelection.Worksheet
' Reset the Find function so the scope of the search area is the current worksheet.
Set Dummy = Worksheets(1).Range("A1:A1").Find("Dummy", LookIn:=xlValues)
' Change "=" to "#" in selection.
Selection.Replace What:="=", Replacement:="#", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
' Select the area you want to paste the formulas; must be same size as original
selection and outside of the original selection.
Set SecondSelection = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
Set SheetSecond = SecondSelection.Worksheet
' Copy the original selection and paste it into the newly selected area. The active
selection remains FirstSelection.
FirstSelection.Copy SecondSelection
' Restore "=" in FirstSelection.
Selection.Replace What:="#", Replacement:="=", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
' Select SecondSelection.
SheetSecond.Activate
SecondSelection.Select
' Restore "=" in SecondSelection.
Selection.Replace What:="#", Replacement:="=", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
' Return active selection to the original area: FirstSelection.
SheetFirst.Activate
FirstSelection.Select
Application.EnableEvents = True
Exit Sub
Whoa:
' If something goes wrong after "=" has been changed in FirstSelection, restore "=".
FirstSelection.Select
Selection.Replace What:="#", Replacement:="=", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
새 항목을 선택할 때 원래 선택 항목의 크기와 모양과 일치해야 합니다.
@Alistair Collins 솔루션을 자동화하는 솔루션을 찾았습니다.
기본적으로 모든 공식에서 =를 *로 변경한 다음 붙여넣기를 수행합니다.
Dim cell As Range
msgResult = MsgBox("Yes to lock" & vbNewLine & "No unlock ", vbYesNoCancel + vbQuestion, "Forumula locker")
If msgResult = vbNo Then
For Each cell In Range("A1:i155")
If InStr(1, cell.Value, "*") > 0 Then
cell.Formula = Replace(cell.Formula, "*", "=")
End If
Next cell
ElseIf msgResult = vbYes Then
For Each cell In Range("A1:i155")
If cell.HasFormula = True Then
cell.Formula = Replace(cell.Formula, "=", "*")
End If
Next cell
End If
실행 방법: 탭을 클릭하여 시트 전체를 복사한 다음, 동일하게 유지할 셀을 잘라 원래 워크시트에 붙여넣습니다.
매우 간단한 다른 회피책을 찾았습니다.1 .내용물 2를 잘라라.새 위치 3에 붙여 넣습니다.방금 붙여넣은 내용을 원하는 위치에 복사합니다.4 .잘라내기-붙여넣기 작업을 취소하고 원래 내용을 원래 위치로 되돌립니다. 5. 클립보드의 내용을 같은 위치에 붙여넣습니다.이 내용에는 원래 참조가 포함됩니다.
많은 것 같지만 키보드 단축키 1로 매우 빠릅니다.Ctrl-x, 2. Ctrl-v, 3. Ctrl-c, 4. Ctrl-z, 5. Ctrl-v
Excel은 체크인하지 않았지만 Libreoffice4에서는 동작합니다.
주소 개서의 모든 것은 연속해서 행해집니다.
(a1) 절단
(a2) 페이스트
다음 중 하나를 중간에 삽입하여 연속성을 중단해야 합니다.
(b1) 절단
(b2) 빈 셀(1개 이상)을 선택하여 드래그(이동)한다.
(b3) 페이스트
스텝(b2)은 갱신하려고 하는 셀이 트래킹을 정지하는 곳입니다.빠르고 심플합니다.
복사할 셀을 클릭합니다.수식 막대에서 수식을 강조 표시합니다.
누르다Ctrl C.
이스케이프(수식을 편집하지 않으려면)를 누릅니다.
새 셀을 선택합니다.Ctrl V.
언급URL : https://stackoverflow.com/questions/6668383/how-to-disable-excels-automatic-cell-reference-change-after-copy-paste
'programing' 카테고리의 다른 글
| 추적되었지만 .gitignore에 있는 파일을 Git이 잊게 하려면 어떻게 해야 하나요? (0) | 2023.04.15 |
|---|---|
| SELECT 쿼리의 SQL Server LOCKS 이해 (0) | 2023.04.15 |
| 장고의 CharField와 TextField의 차이점은 무엇입니까? (0) | 2023.04.15 |
| 따옴표로 셸 변수를 묶는 경우 (0) | 2023.04.15 |
| Date Time(UTC) 저장과 Date Time Offset 저장 (0) | 2023.04.15 |