728x90

 

 

표 모양의 데이터를 보기 편하게 셀 병합을 자주 사용합니다.

거의 99.999%의 엑셀 사용자가 사용하는 기능이 아닐까 싶습니다.

하지만 여기에 약간 약점이 있는데요. 우선 병합할 때는 왼쪽 위의 데이터만 남기고 나머지는 다 날라갑니다.

 

병합시 나타나는 메시지

 

 

그리고 또 하나의 문제가 병합을 해제할 때인데 한칸만 남기고 빈칸이 됩니다.

이게 보기도 싫고 수식이나 필터의 에러를 만들 수 있습니다.

이 빈칸을 처리하는 방법을 알아보겠습니다.

 

빈 칸이 되었습니다.

 

 

 

< 빈칸을 메꾸는 방법 >

 

① 빈칸을 포함해서 내용을 선택합니다.

 

빈 칸을 포함해서 선택하되 맨 아래는 꼭 내용이 있어야 합니다.

아니면 아무거나 적어서 거기까지 선택해야 합니다.

 

내용이 없으면 더미로 만들어야 합니다.

 

 

 

 

② F5 를 눌러서 이동 탭을 엽니다.

 

F5를 누르면 "이동 탭"이 열리는데 여기서 "옵션"을 누릅니다.

"빈 셀"을 선택하면 빈셀만 선택됩니다.

이동 탭을 사용하면 정해진 유형을 전부 선택합니다.

 

빈셀을 선택합니다

 

 

 

 

③ =을 눌러서 수식을 활성화 시킵니다.

 

바로 위칸을 선택하고 Ctrl + Enter를 눌러야 합니다.

그럼 아래 셀까지 전부 변하게 됩니다.

 

그럼 위에 칸으로 다 됩니다.

 

좀 더 많은 범위를 선택해도 이 방법은 먹힙니다.

아래 GIF를 통해서 좀 더 이해가 쉽기를 바랍니다.

 

움짤입니다.

 

반응형
728x90
목차

1. 함수 사용하기 (UNIQUE + SUMIF)

2. VBA로 목록 만들기

 

 

여러가지 분류로 표를 만들고 요약을 할 경우가 많습니다.

요약을 할때는 부분합을 구하는 방식으로 구하는 경우가 많은 오늘 그런 경우를 해결해주는 방법을 알아 보겠습니다.

아래 예시에 분류별로, 혹은 치수별로 총 수량을 구하는 방법 2가지를 소개하겠습니다.

 

오늘의 예시입니다.

 

 

 

1. 함수 사용하기 (UNIQUE + SUMIF)

 

마이크로 오피스 365 이상의 버전에서는 배열을 처리하는 기능이 강화되었습니다.

그중 하나가 UNIQUE 함수합니다. 이 함수는 목록을 입력받아서 중복된 값을 지우고 고유값 목록을 만들어 줍니다.

이걸 SUMIF와 결합하면 쉽고 간단하게 목록을 만들 수 있습니다.

 

 

UNIQUE(범위) : 범위내에서 목록을 반환합니다. 오피스365 버전 이후에는 바로 목록을 배열하는 기능이 지원됩니다.

SUMIF(범위,조건,더할 값) : "범위""조건"하고 맞을 때 "더할 값"에 값들을 찾아서 더합니다.

 

먼저 UNIQUE 함수가 동작하는 방식을 알아보겠습니다.

백문이 불여일견이니 아래를 보겠습니다. UNIQUE 함수를 사용하자마자 목록이 생겼습니다.

 

UNIQUE 함수 사용하기

 

 

이제 여기에 SUMIF만 적용하면 됩니다.

함수내용은 아래와 같습니다.

=SUMIF($A$2:$A$55,H2,$D$2:$D$55)

  • $A$2:$A$55 : 범위가 됩니다.
  • H2 : 조건이 됩니다. 분류에서 같은 값을 찾은 조건입니다.
  • $D$2:$D$55 : 더할 값들입니다. 스마하트하게 범위에서 데이터를 찾으면 같은 열이나 행에서 찾아줍니다.

 

SUMIF 적용하기

 

 

 

2. VBA로 목록 만들기

 

위에 함수들은 일정이상 엑셀에 숙련된 분이라면 빠르게 적용이 가능할 것입니다.

하지만 UNIQUE 함수가 오피스 365 이상에만 적용되는 점 때문에 사용이 어려울 수도 있을 것입니다.

그리고 VBA로 짠 문서가 사용이 편할 수도 있을 것 같아서 코드를 소개합니다.

우선 파일을 바로 공유합니다. 제가 쓰던 코드라서 가볍게 사용 가능 하셨으면 좋겠습니다.

 

VBA 예제.xlsm
0.63MB

 

 

소스코드 및 사용법은 아래와 같습니다.

 

Sub SummarizeData()
    Dim wsSource As Worksheet
    Dim wsTarget As Worksheet
    Dim criteriaCol As Long
    Dim valueCol As Long
    Dim startCell As Range
    Dim lastRow As Long
    Dim dict As Object
    Dim i As Long
    Dim category As Variant
    Dim value As Variant
    
    ' ① 워크시 기본 정보 입력하기
    Set wsTarget = ThisWorkbook.Sheets("실행")
    On Error Resume Next
    Set wsSource = ThisWorkbook.Sheets(wsTarget.Range("D3").value)
    On Error GoTo 0
    Set startCell = wsTarget.Range("F8")
    
    ' ② 먼저 입력 했던 값 선택하고 지우기
    Worksheets("실행").Range(startCell.Address).CurrentRegion.Select
    Selection.ClearContents
    
    ' 시트가 없으면 없다고 알려주고 끝내기
    If wsSource Is Nothing Then
        MsgBox "대상 시트가 존재하지 않습니다.", vbExclamation
        Exit Sub
    End If
    
    ' ③ 입력한 열의 이름을 열 번호로 변경하기
    criteriaCol = wsSource.Range(wsTarget.Range("D4").value & "1").Column
    valueCol = wsSource.Range(wsTarget.Range("D5").value & "1").Column

    
    ' ④ "기준"이 되는 열에서 마지막 칸 입력하기
    lastRow = wsSource.Cells(wsSource.Rows.Count, criteriaCol).End(xlUp).Row
    
    ' ⑤ 폴더를 초기화합니다. 참조에서 Microsoft Scripting Runtime를 활성화 시킵니다.
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' ⑥ dict에 값이 없으면 폴더를 추가하고, 있으면 숫자의 값을 불러와서 더합니다.
    For i = 1 To lastRow
        category = Trim(wsSource.Cells(i, criteriaCol).value)
        value = wsSource.Cells(i, valueCol).value
        
        If category <> "" And IsNumeric(value) Then
            If dict.exists(category) Then
                dict(category) = dict(category) + CDbl(value)
            Else
                dict.Add category, CDbl(value)
            End If
        End If
    Next i
    
    ' ⑦ 결과 출력를 출력합니다. 참조가 추가되지 않으면 여기서 에러가 납니다.
    i = 0
    For Each category In dict.Keys
        startCell.Offset(i, 0).value = category ' 분류
        startCell.Offset(i, 1).value = dict(category) ' 합계
        i = i + 1
    Next category
    
    MsgBox "데이터를 정리하였습니다" & Chr(10) & "https://toast-story.tistory.com", vbInformation
    
End Sub

 

 

실행하는 방법

 

우선 실행하는 방법은 쉽습니다.

이 워크시트에 정리할 시트를 복사해서 붙여 넣고, 데이터만 있는 상태로 만듭니다.

그리고 시트이름 / 정리할 열 / 숫자가 들어있는 열을 각각 입력하고 옆에 회색의 실행버튼을 누릅니다.

그럼 아래와 결과가 정리됩니다.

결과를 복사해서 필요한 곳에 가져다 쓰시면 됩니다.

반응형
728x90

 

 

< 소개영상 >

 

https://youtu.be/UD-y1_BQ5Rg

소개영상입니다.

 

 

 

 

< 개임 개요 >

 

모모도라


모모도라: Moonlit Farewell은 2014년 Bombservice에서 개발한 게임입니다.

스팀기준으로 처음부터 한국어가 지원되어서 접근성이 좋아졌습니다.

모모도라 시리즈의 5번째 작품으로 시리즈가 모두 메트로배니아 장르에 Dot 그래픽 위주입니다.

Dot 이지만 상당히 깔끔해서 거부감없이 플레이할 수 있고 시원시원한 효과음과 BGM으로 구성되어 있습니다.

 

 

 

 

< 스토리 >

 

검은종을 찾습니다.

 

어느 날 검은 종을 울린 자에 의해 악마들이 소환되었습니다.

코호 마을에 여사제들은 사람들을 구하기 위해서 사태를 조사하게 됩니다.

요정마을이 습격당하고, 고대의 존재가 혼돈에 오염되는 등 세상에 혼란에 빠진상황,

뛰어난 기량을 가지고 있는 고위 여사제 모모 역시 악마들을 퇴치하면서 수색에 나서게 됩니다.

 

 

 

 

< 게임의 진행 >

 

단조롭지만 정확한 액션

 

게임은 달리고 점프하고 공격하는 2D 액션 메트로베니아 장르로 제작되었습니다.

기력과 마력이 있는데 기력으로 회피나 원거리 공격을 마력으로는 종을 울려 체력을 채웁니다.

모모는 스토리를 진행하면서 이단점프나 벽점프 같은 기술을 배우게 되며 갈 수 있는 곳이 늘어납니다.

세이브 포인트는 종이 있는 사당에서 종을 때리면 세이브 됩니다.

세이브 포인트가 명확하게 있기는 하지만 기본적으로 보스를 해치우거나 중요한 아이템을 얻으면 저장이 됩니다.

 

 

 

 

< 장비와 아이템 >

 

맵에 아이템을 찾아 강해집니다.

 

근접전은 커다란 나뭇잎을 휘두르고 원거리 무기는 화살로 장비는 변경할 수 없고 고정되어 있습니다.

카드를 장착할 수 있고, 동료를 선택할 수 있습니다.

천상의 백합에서 기도하면 공격력이 올라가고 각종 열매를 먹어 체력과 마력, 기력회복량을 늘릴 수 있습니다.

성장의 효과가 확실하고 아이템이 있는 맵에 ?가 표시됨으로 다 뒤져서 최대한 먹도록 합시다.

 

 

 

< 게임의 특징 >

 

보스전입니다.

 

스토리의 길이가 좀 짧고 난이도가 낮은 편입니다.

첫플레이에 운이 좀 따르기는 했지만 플레이 타임 12시간만에 1회차 앤딩을 봤으니 가격대비 짧습니다.

캐주얼한 난이도를 원하는 경우에 좋은 게임이라고도 할 수 있습니다.

특히 시리즈 전통으로 내려오는 한대도 안맞고 보스잡기가 도전과제로 빠지면서 팬들에게 아쉬울 수 있습니다.

치유의 종이 강력해서 스텟을 끝까지 올린 후에는 맞아가면서 피를 채우면서 보스를 잡아도 됩니다.

어려운 난이도는 좋아하고 말고를 떠나서 이런 점은 힘이 빠질 수도 있습니다.

 

 

 

 

< 마무리 >

 

Dot으로 만들어진 배경

 

게임자체는 재미가 있고 조작감도 뛰어나고 버그도 적습니다.

Dot 그래픽 특유의 배경묘사와 스테이지를 넘어갈때 마다 맵의 색체의 변화는 게임에 몰입도를 높입니다.

게임의 볼륨이 적은 것은 단점일 수도 있지만 심심풀이삼아 해볼 수도 있겠죠

하지만 가성비 게임이 넘처나는 요즘 스팀정가 기준 18,000은 좀 아깝네요.

할인할 때 한번 해보시길 권장해 드립니다.

반응형
728x90

 

 

그렇지 않습니까? 클래식한 디자인에 대한 향수 같은 게 느껴집니다.

노트북을 사도 좀 보수적으로 사용합니다. 2TB HDD 같은걸 달아야 된단 말입니다.

백업용 외장 하드를 달아서 노트북을 써야겠다는 그런 의무감이 들었습니다.

 

인터넷을 노트북을 구입하려는 연약한 1TB SSD 같은건 넘치지만 누구도 나의 이 HDD 감성을 만족시켜주지 않았습니다.

그런던 중 레노버 V15 G4 ABP 모델을 찾았습니다.

제품설명에 떡하고 HDD SATA Slot이 있더라고요. 정말 바로 구입했습니다.(최저가 검색도 안하고요)

이거 보고 샀습니다.

 

후회는 없고 반품도 없습니다. 구입하자마자 Windows를 설치하고 바로 HDD를 부착했습니다.

노트북용 HDD는 2.5 인치라고 된 모델을 구입하면 됩니다.

교체 과정을 소개하겠습니다.

 

 

 

 

① 제품의 뒤를 열어 커버의 나사를 풀어 보세요.

 

주의할 점이 하나 있는데 9개소 다 5각 별 모양(☆) 렌치로 풀어야 합니다.

이거 때문에 회사에서 하나 빌려 왔는데요. 무리해서 딴걸로 못여니까 꼭 챙기세요.

전용나사만 있으면 됩니다.

 

별 ☆ 렌치입니다.

 

 

 

 

② 카드 혹은 일자 드라이버로 후방 커버의 틈새를 벌여 줍니다.

 

자기가 손재주에 혹은 카드질에 자신있다 하면 카드로 될것도 같습니다.

근데 저는 안되더라고요. 그냥 구석에 있는 일자 드라이버를 사용했습니다.

다만, 드라이버로 열 경우 찌그러질 수 있습니다.

예, 사자마자 노트북 찌그러 먹었습니다. 아 나 ㅜㅜ

 

 

 

특히 렌선 꼽는 포트 옆을 조심해야합니다.

그쪽은 꼭 후크를 해제해서 후방 커버가 깨지는 경우가 없도록 합시다.

 

 

 

 

③ HDD 슬롯을 꺼냅니다.

 

자, 이제 커버를 열었습니다.

물론 현명한 당신은 근처에 물이라든가 애들이나 애완동물이 없도록 해서 작업을 할 것입니다.

하지만 이제부터 먼지가 들어갈 수 있음으로 더욱 조심해서 빠르게 작업합시다.

 

HDD 슬롯

 

저 슬롯은 분해가 되도록 되어 있습니다.

4방향에 나사가 있고 이번에는 십자 드라이버를 이용해야 합니다.

 

 

 

 

④ HDD 슬롯에 HDD를 집어 넣고 조립을 합니다.

 

이 노트북을 구입했다면 사타 케이블이 별첨으로 들어있음을 확인하셔합니다.

있는게 정상입니다. 없다면 고객센터로 따지거나 사야합니다.

그리고 만족스럽게도 이 케이블은 나사 4개와 함께 있습니다.

 

왼쪽의 케이블과 나사를 사용해서 HDD 슬롯에 조립을 합니다.

 

HDD 슬롯 오른쪽과 왼쪽에 2개씩 4개를 조립하면 됩니다.

 

 

 

 

⑤ HDD 슬롯을 위에서 눌러서 조립을 합니다.

 

메인 보드 구석에 빈 커넥터가 있습니다.

그곳에 케이블을 연결하면 되는데 옆으로 눌러 넣는 스타일입니다.

이런 방식의 케이블을 똑딱하는 소리도 안들리고 살짝 끼워놓으면 되는 척을 할 때가 있습니다.

그래서 야무지게 잘 안쪽까지 눌러넣는 다는 기분으로 꾹하고 넣고 검은색 단추로 잠궈둡니다.

 

왼쪽 확대 사진을 참고해서 단단히 체워두세요

 

이거 대충 체결하면 쓰다가 빠질 수도 있거든요.

저 상태로 살짝 고무 테이프로 고정할 수도 있지만 능숙하지 않은 분들은 하지마세요.

 

 

 

 

⑥ 이제 다시 커버를 덮어 둡니다.

 

조립한 반대로 하면 되는데 커버를 먼저 쒸우고 모서리를 엄지로 툭툭 눌러 줍니다.

후크가 타닥타닥하고 걸리는 소리가 들립니다.

모서리 전체를 골고루 전부 눌러둡니다.

무작정 나사를 체워도 되기는 하지만 억지로 하다 부품이 틀어지면 보기도 싫고 손상 위험도 있습니다.

 

 

 

 

⑦ 이제 연결이 잘 되었는지 확인합니다.

 

HDD가 새거였기 때문에 바로 사용할 수는 없고 초기화를 시켜야 됩니다.

윈도우 10을 기준으로 할 때, [제어판] - [관리도구] - [컴퓨터 관리] - [저장소]에 가면 비활성화된 HDD를 만날 수 있습니다.

 

초기화 안된 녀석이 있죠

 

자동으로 인식해서 초기화를 먼저 시킵니다.

그리고 디스크 0이라고 쓰인부분(빨간 화살표)를 오른쪽 클릭해서 동적디스크로 전환합니다.

그 때부터는 우리가 평소에 쓰는 하드 디스크가 됩니다.

 

320x100

 

 


 

SSD가 약하다든가 작은 노트북이 신뢰성이 떨어진다는 이야기는 하지 않겠습니다.

개인적으로 HDD의 큰 용량이 필요한 것이고 그리고 그런 공간을 확보한 두꺼운 모델을 선호합니다.

그런 면에서 아직 구입한지 얼마 안된 것을 감안해도 하지만 정말 후회되지 않네요.

레노버 모델 진짜 마음에 듭니다.

 

반응형
728x90

엑셀에서는 워크스프레드 프로그램에 문서형식으로 작성하는 많은 기능이 있습니다.

그 중에 하나가 그림을 삽입하거나 도형을 그리는 기능입니다.

그런데 그림을 삽입해서 문서를 편집하다보면 그림이 변하는 것을 볼 수 있습니다.

 

셀 삽입과 삭제에 따라 변하는 도형

 

 

주로 셀을 삽입하거나 삭제하는 기능에 따라서 이동하거나 커지거나 작아집니다.

이런 기능은 문서의 편집과 함께 하는 것이라 보통은 좋은 기능입니다.

하지만 항상 편한건 아닙니다.

원하지 않을 때를 대비한 도형 속성을 변경해서 크기와 위치를 고정하는 기능을 소개합니다.

 

 

 

도형을 여러개 동시에 선택해서 할 수도 있지만, 기본적으로는 매번 설정해주어야 합니다.

[오른쪽 클릭] - [도형서식] - [도형 서식 / 개체 서식] - [도형 옵션] - [크기 및 속성] - [변하지 않음]을 선택합니다.

위치만 변함을 선택하면 크기는 변하지 않고 위치는 변합니다.

일단 이렇게 잠그고 나면 도형의 위치는 고정됩니다.

 

잠그고 난 후의 도형

 

 

이게 좀 불편하게 일일히 설정해야 하는 것이 있습니다.

하지만 문서에 일괄적으로 들어가는 회사로그 같은 것에는 설정을 해둘 수도 있겠죠.

엑셀에서 좀 디폴트 옵션을 변하게 하는 시대가 빨리 왔으면 좋겠습니다.

 

 

반응형
728x90

 

 

엑셀 VBA를 작성하다보면 이 결과물이 어디에 쓰일지 다 예상 못할 수도 있습니다.

중요한 것은 DATA의 수와 끝을 파악하는 것이고요.

VAB에서 많이 사용하는 내용의 끝을 파악하는 방법에 대해서 알아 보겠습니다.

 

※ 엑셀 인터페이스에서 쓰는 Find 함수와 VBA에서 사용하는 Find 매소드는 별개임을 알려드립니다.

 

 

 

① B 행에서 내용이 있는 마지막 셀 찾기

 

find를 사용할 껀데 먼저 코드를 보도록 하겠습니다.

 

Sub FindLastColumn()

    Dim ws As Worksheet
    Dim lastCell As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet5")
    
    'find를 사용해서 마지막 값을 찾음
    Set lastCell = ws.Columns("B").Find(What:="*", _
                                        After:=ws.Range("B1"), _
                                        LookIn:=xlFormulas, _
                                        LookAt:=xlPart, _
                                        SearchOrder:=xlByRows, _
                                        SearchDirection:=xlPrevious)
    
    If Not lastCell Is Nothing Then
        MsgBox "B행의 마지막 데이터는 " & lastCell.Address & "에 있습니다."
    Else
        MsgBox "B행에 데이터가 없습니다."
    End If
End Sub

 

Find의 사용법은 위 코드를 보면 알 수 있고 각 매개변수에 대해서 설명하겠습니다.

 

  • What : 찾을 값으로 * 을 사용하였음으로 "모든 값"을 검색합니다.
  • After : 검색을 시작할 위치입니다. 여기서 부터라고 보면 됩니다.
  • LookIn : 검색할 기준입니다. 이 경우에는 수식으로 검색하는 것이 좋습니다.
        - xlFormulas : 수식을 기준으로 검색하는데 수식의 결과가 아닌, 수식 자체를 검색합니다. 
        - xlValues : 값을 검색합니다. 이 경우에는 수식의 결과를 기준으로 검색합니다.
        - xlComments : 셀에 추가된 주석을 검색합니다.
        - xlCommentsThreaded : Threaded Comments라는 Office365 버전부터 추가된 새로운 주석을 검색합니다.
  • LookAt : (xlPart : 부분일치), (xlWhole : 전체일치)중 하나를 선택합니다.
  • SearchOrder : 검색하는 영역입니다. (xlByRows : 행 기준), (xlByColumns : 열기준)
  • SearchDirection : 검색하는 방향입니다. (xlNext : 앞에서 뒤로), (xlPrevious : 뒤에서 앞으로)
  • (MatchCase) : 검색할 때 대소문자를 구별할지 선택합니다. 디폴트는 False(구별 안함)입니다.
  • (MatchByte) : 더블 바이트 언어를 설치했을 때 사용합니다.
        - True : 더블 바이트 문자가 정확하게 더블 바이트와 일치할 경우만 검색
        - False : 더블 바이트 문자가 싱글 바이트와 일치해도 검색함
  • (SearchFormat) : 검색 형식입니다.

 

즉 위의 코드는 ws.Columns("B") 로 범위를 제한해서,

B1부터 시작하여 해당 행(xlByRows)에서 뒤에서 앞으로(xlPrevious) 검색하여 처음 만나는 값의 위치를 찾습니다.

 

 

 

 

② 셀에서 마지막 범위 찾기

 

거의 같습니다. 똑같이 Find를 사용합니다.

 

Sub FindLastCell()
    Dim ws As Worksheet
    Dim lastCell As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet5")
    
    ' 마지막 데이터를 찾음
    Set lastCell = ws.Cells.Find(What:="*", _
                                 After:=ws.Cells(1, 1), _
                                 LookIn:=xlFormulas, _
                                 LookAt:=xlPart, _
                                 SearchOrder:=xlByRows, _
                                 SearchDirection:=xlPrevious)
    
    If Not lastCell Is Nothing Then
        MsgBox "워크시트의 마지막 데이터는 " & lastCell.Address & "에 있습니다."
    Else
        MsgBox "워크시트에 데이터가 없습니다."
    End If
End Sub

 

 

처음나온 코드에서 범위를 행으로 제한했던 ws.Columns("B")를 전체 대상의 ws.Cells로 변경한 것입니다.

SearchOrder는 "xlByRows"로 하면 가장 아래 값을 끝으로 "xlByColumns"를 하면 가장 오른쪽에 있는 셀을 선택합니다.

 

 

 

 

③ 처음부터 끝까지 선택하기

 

이제 응용편입니다.

끝의 셀을 선택한다면 처음셀로 찾을 수 있죠.

두 셀을 찾아서 전체 선택을 하는 코드입니다.

이 것 역시 간간히 쓰는데, 그때그때 작성하려니 실수가 많아 오늘 기회로 정리합니다.

 

Sub SelectallContentCell()
    Dim ws As Worksheet
    Dim firstCell As Range
    Dim dataRange As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet5")
    
    ' 처음 셀 찾기
    Set firstCell = ws.Cells.Find(What:="*", _
                                  After:=ws.Cells(1, 1), _
                                  LookIn:=xlFormulas, _
                                  LookAt:=xlPart, _
                                  SearchOrder:=xlByRows, _
                                  SearchDirection:=xlNext)
    
    ' 마지막 셀 찾기
    Set lastCell = ws.Cells.Find(What:="*", _
                                 After:=ws.Cells(1, 1), _
                                 LookIn:=xlFormulas, _
                                 LookAt:=xlPart, _
                                 SearchOrder:=xlByRows, _
                                 SearchDirection:=xlPrevious)
            
        Set dataRange = ws.Range(firstCell, lastCell)
        dataRange.Select
    
    If Not firstCell Is Nothing Then
        MsgBox "선택된 범위는 " & dataRange.Address
    Else
        MsgBox "워크시트에 데이터가 없습니다."
    End If
End Sub

 


결과입니다.

셀도 선택을 잘하고 매세지도 잘 출력됩니다.

 

 

반응형
728x90
< 목차 >

1. 끝으로 이동하기

2. 끝까지 선택하기

 

많은 데이터가 있는 표를 위에서 작업하다 보면 처음과 마지막으로 이동할 일이 많습니다.

엑셀에서는 그럴 때 사용하도록 Ctrl + 방향키(←,→,↑,↓)를 눌러서 끝에서 끝까지 이동할 수 있습니다.

무슨 게임하는 것 같아서 처음에는 익숙해지지 않았을 때는 마우스에 많이 의존하지만,

일단 적응되면 손에서 놓을 수가 없습니다.

 

 

1. 끝으로 이동하기

 

Ctrl + 방향키로 움직이기

 

VBA에서도 이 기능을 수행하는 명령어가 있습니다.

 

  • xlDown : 시작 위치에서 아래방향으로 데이터가 끝나는 셀로 바로 이동합니다. 
  • xlUp  : 시작 위치에서 위 방향으로 데이터가 끝나는 셀로 바로 이동합니다. 
  • xltoRight : 시작 위치에서 오른쪽 방향으로 데이터가 끝나는 셀로 바로 이동합니다. 
  • xltoLeft  : 시작 위치에서 왼쪽 방향으로 데이터가 끝나는 셀로 바로 이동합니다. 
  • 시작 위치가 데이터가 없는 빈 셀일 경우에는 반대로 처음 데이터가 있는 셀로 이동합니다.
  • 빈 셀인 경우 그 방향에 데이터가 하나도 없으면 끝까지 이동합니다.

사용하는 방법은 아래와 같습니다.

간단함으로 모두 묶어서 하나의 소스에 담아서 설명하겠습니다.

 

Sub MoveCell()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ws.Range("B28").End(xlDown).Select '아래 방향으로
    ws.Range("B28").End(xlUp).Select '위 방향으로
    ws.Range("B28").End(xltoRight).Select '오른쪽 방향
    ws.Range("B28").End(xltoLeft).Select '왼쪽 방향으로

End Sub

 

 

보시면 이해될 것이라고 생각합니다.

셀 B28 에서 아래, 위, 오른쪽, 왼쪽으로 이동하는 소스입니다.

 

 

2. 끝까지 선택하기

 

위에 처럼 이동하는 것으로도 편리하지만 전체 선택하기라는 편리한 기능도 있습니다.

일반 엑셀 인터페이스에서는 Ctrl + Shift + 방향키(←,→,↑,↓) 입니다.

이 기능을 수행하는 코드도 설명 드리겠습니다.

 

범위 선택하기

 

소스로 따지면 약간 길어지는 합니다.

하지만 어렵지는 않으니 사용해 보면 바로 알 수 있을 것 같습니다.

 

Sub SelectRange()

    Dim ws As Worksheet
    Dim dataRange As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' A1부터 아래 방향으로 데이터가 있는 마지막 셀까지 범위 선택
    Set dataRange = ws.Range("A1", ws.Range("A1").End(xlDown))
    dataRange.Select

    ' A1부터 오른쪽 방향으로 데이터가 있는 마지막 셀까지 범위 선택
    Set dataRange = ws.Range("A1", ws.Range("A1").End(xlToRight))
    dataRange.Select

    ' A1에서 시작해 데이터가 있는 끝까지 범위를 설정
    Set dataRange = ws.Range("A1", ws.Range("A1").End(xlToRight).End(xlDown))
    dataRange.Select
    
End Sub

 

 

굉장히 자주 사용하는 코드로 사용자가 입력해서 계속 길어지는 엑셀에 VBA를 적용할 때 사용하기도 합니다.

잘 사용하면 순환문 하나 정도 뺄 수도 있게 만드는 편리한 코드입니다.

저도 이렇게 포스팅 해놓고 수시로 보러고 작성하는 것이랍니다.

보시는 분께도 참고가 되었으면 좋겠습니다.

 

320x100

 

반응형
728x90

https://youtu.be/LzJxL-e90yE

영상버전입니다.

 

 

더 메신저는 통합 플렛폼 게임으로 중간의 지하세계까지는 스토리가 연결됩니다.

그 이후에는 맵이 오픈되면서 돌아다니면서 아이템을 찾는 방식입니다.

예언을 통해서 힌트를 알 수 있어 직접 찾아 보셔도 됩니다.

앤딩을 보기 위한 필수 아이템에 대해서 정리해 봤습니다.

보스룸 있는 곳 지도 스샷이 날아갔는데요 ㅜㅜ 여기는 한번 가보셨으니 갈 수 있을 거라 생각합니다.

 

오픈된 전체 맵


① 희망의 열쇠(붉은 언덕)

 

여기는 어렵지 않게 찾습니다.

지하세계 이 후에는 맵을 자유롭게 돌아다닐 수 있습니다.

그럼 바로 붉은 언덕에서 희망의 열쇠를 얻을 수 있습니다.

바로 맵에 이 장소로 이동하면 얻을 수 있고 아이템이 필요하지는 않습니다.

 

 

② 힘의 열쇠(가파른 돌산)

 

이 보스맵에 2번 방문해야 합니다.

 

먼저 가파른 돌산에 꼭대기의 보스맵에 2번 방문해야 합니다.

미래의 용사의 모습 미래로 방문해서 식물학자들이 늙어 죽었지만 힘의 엉겅퀴를 얻어야 합니다.

식물이 있는 상태에서 다시 과거 상태로 방문하면 이벤트를 할 수 있습니다.

그럼 접근 못하는 지역으로 날려주는데 이 곳에서 힘의 열쇠를 얻을 수 있습니다.

 

새로운 지형으로 날아가면 이 열쇠가 기다리고 있습니다.

 

 

③ 진정한 시야의 힘

 

다음 열쇠를 얻기 위해서는 이것저것 모을게 많습니다.

시간을 과거로 하고 "닌자 마을"의 장로에게 돌아가면 천상의 씨앗을 줍니다.

이걸 다시 과거 상태에서 "가파른 돌산"에서 꼭대기의 보스룸에 들어갑니다.

(위에 있는 저곳입니다.)

 

장로가 있는 곳은 아시죠?

 

가파른 돌산의 보스맵에 다시 2번 방문해야 합니다.

이번에는 먼저 과거 상태로 가서 화단을 선택하면 콜로스와 수제스가 씨앗을 심을 수 있게 해줍니다.

그런 후 미래로 시간을 바꿔서 다시 돌아가면 천상의 찻잎을 얻습니다.

 

여길 또 가야 합니다.

 

다시 시계를 과거로 돌려서 "닌자 마을"의 장로에게 다시 돌아가면 진정한 시야의 힘을 얻을 수 있습니다.

(사실은 양초)

 

시야의 힘

 

 

④ 강령술사의 메모 + 룩스틱의 부적

 

지하묘지 보스룸도 아시죠(맵이 날아가서요)


미래시대에서 지하묘지의 보스룸에 들어갑니다.

그럼 편지를 발견할 수 있고 부적을 얻을 수 있습니다.

이 부적을 얻으면 구름유적에도 갈 수 있지만 일단 지금은 편지에 있는 지하로 가겠습니다.

 

 

화살표가 보이시나요? 저기로 들어가면 됩니다.

 

미래시대에서 강령술사가 알려준 곳으로 가면 동굴로 들어갈 수 있습니다.

위에 그림에 있는 장소로 이동하면 비밀 장소에 갈 수 있습니다.

미래상태로 가야 합니다.

 

 

⑤ 어두운 동굴

필요한것 : 진정한 시야의 힘

이미 위에서 얻은 상태인 데다가 시야가 없는 상태에서 외워서 이 맵을 지나가면 업적이 깨집니다.

 

어두운 동굴

 

진정한 시야의 힘이 없으면 완전히 어두워 보이고 있으면 그래도 주변이 어느정도는 보입니다.

끝까지 가면 Rivière Turquoise로 이어집니다.

 

 

⑥ 마법의 반딧불이(Rivière Turquoise 보상)

 

나비 여족장입니다.

 

이 곳의 퍼즐이 쉽지는 않습니다.

Rivière Turquoise의 끝까지 가면 맵의 보스 나비 여족장을 상대하게됩니다.

보스 보상으로 마법의 반딧불이를 얻을 수 있습니다.

 

 

⑦ 마법의 소라고둥(가시버섯 늪지)

 

늪으로 들어가기

 

가시버섯 늪지지역에 시대를 과거로 하고 가야 합니다.
위의 맵에 있는 모래늪에 빠져야 합니다.
그럼 아래 퍼즐형 맵이있는데 뚫고 지나가면 마법의 소라고둥을 얻을 수 있습니다.

 

소라고둥을 얻는 장소

 

 

⑧ 숲의 수도승(가시버섯 늪지)


필요한 것 : 마법의 반딧불이

 

보스룸 있는 곳은 아시죠?

 

이번에는 쉽습니다. 과거시대로 방문해야 하는 점만 주의하면 됩니다.

가시버섯 늪지에서 보스룸으로 가면 자동으로 이벤트가 진행됩니다.

 

 

⑨ 침몰한 사원

필요한 것 : 마법의 소라고둥, 마법의 반딧불이

 

 

울부짓는 동굴에서 아래 맵으로 가야 하고 과거시대로 들어가야 합니다.

맵에서 진행하다 보면 미래로 변경되게 됩니다.

물속에서는 마법의 소라고둥의 힘으로 입구 가까히에 가면 빛나는 가루 같은게 나와서 길을 알려줍니다.

한참 가다보면 침몰한 유적에 도착합니다.

 

침몰한 유적은 입구에서 둘로 나누어 들어가도록 되어있습니다.

둘 다 돌아야 하며 신속의 버선 / 달의 문장 / 태양의 문장 세가지 아이템을 얻을 수 있는데 위치만 표시합니다.

마법의 반딧불이가 없다면 신속의 버선만 보이고 문장은 안보입니다.

 

← 신속의 버선 / ↑ 달의 문장 / → 태양의 문장

 

 

⑩ 사랑의 열쇠(침몰한 사원)

사랑의 열쇠 드디어

 

이제 태양과 달의 문장을 얻을 수 있습니다.

유적의 중앙의 큰 문으로 돌아가면 문을 열수 있고 이벤트 직후 바로 사랑의 열쇠를 얻을 수 있습니다.

 

 

⑪ 혼돈의 열쇠(지하세계)

 



필요한 것 : 신속의 버선
지하세계에 있는 곳으로 가면 혼돈의 열쇠를 얻을 수 있습니다.
신속의 버선이 좀 사용하기는 어렵지만 있는 곳까지 가기만 하면됩니다.

 

 

⑫ 공생의 열쇠(자연의 하늘섬)

 

필요한 것 : 수도승의 저주 풀기

 

여기 가기만하면 됩니다.

 

빙하산에 가면 맨프래드가 얼음 속에 있습니다.

수도승이 여기로 가는 길을 열어줍니다.

맨프래드는 구해주면 자연의 하늘섬으로 데려가 줍니다.

 

수호자 보스 보상

 

이곳에서는 비행기 게임을 하는 느낌을 받는 맵입니다.

자연의 하늘섬에서 쭉 가면 시계태엽 수호자와 보스전을 하게됩니다.

이 보스전 보상이 공생의 열쇠입니다.

 

 

⑬ 포비킨들 → 폴로른 사원

 

필요한 아이템 : 대나무 만 : 필요조건 없음, 구름유적 : 룩스턴의 부적 필요, 지하세계 : 신속의 버선 필요

 

대나무 만, 구름유적, 지하세계의 각 한마리씩 포비킨을 찾을 수 있습니다.

먼저 구름 유적입니다.

룩스턴의 부적이 있는 상태에서 빙하산 꼭대기로 가면 지팡이가 구름유적으로 가줍니다.

 

구름유적으로 올라기기

 

구름유적에서 아래 위치로 가면 포비킨 일꾼인 아크로를 찾을 수 있습니다.

 

구름유적

 

클로스트로는 대나무 만에 있는데 아마 이녀석을 가장 먼저 발견할 확율이 높습니다.

 

클로스트로 위치

 

파이로는 침몰한 사원에 있는데 웨이포인트 바로 옆이라서 어렵지 않게 갈 수 있습니다.

다만 신속한 버선이 필요합니다.

 

파이로

 

열쇠를 찾는 길에 찾을 수도 있습니다.(예를 들면 파이로)

다른 거 하다 짬짬히 미리 찾아두면 편리하기는 합니다.

 

 

⑭ 마왕의 왕관

 

필요한 것 : 포비킨 전원

 

초반의 다리 위치 기억나시나요?

이제 건너면 폴로른 사원으로 갈 수 있습니다.

 

사원 위치

 

폴로른 사원의 보스가 바로 마왕입니다.

이 마왕을 물리치면 마왕의 왕관을 줍니다.

열쇠를 바로 안주고 아이템으로 줍니다.

 

왕관을 얻었습니다.

 


⑮ 용기의 열쇠(심연)

 

필요한 것 : 마왕의 왕관

 

시간의 탑의 기술자 앞에 왕관을 넣으면 심연으로 들어갈 수 있습니다.
심연의 끝에 열쇠가 있는데 열쇠는 그냥 따로 시련없이 먹어집니다.

 

심연

 

문제는 열쇠를 얻고 나면 괴물에게 도망쳐야 하는데 이게 어렵습니다.

추격전에서 살아남으면 무사히 모든 열쇠를 전부 얻게 됩니다.

 

심연 즐기는 거

 

이제 예언자에게 가면 모든 반전과 함께 앤딩으로 나아갈 준비를 합니다.

정말 얻을게 많네요.

여기까지 즐겁게 플레이 하시길 바랍니다.

 

반응형
728x90

 

 

 

< 소개 영상 >

https://youtu.be/3Qt4ZdmJwvA

소개영상

 

 

 

< 게임개요 >

 

더 메신저는 2018년 캐나다의 사보타주 스튜디오에서 출시하고,

원래는 영화 배급사인 미국의 디볼버 디지털에서 유통을 맡아 진행했습니다.

닌자의 달리고 뛰어서 위험한 곳으로 잠입하는 이미지를 사용해서 닌자 액션게임으로 만들어졌습니다.

도트그래픽을 연상하는 폭고풍의 2D 게임으로 다양한 장르를 섞어둔 플랫폼 게임으로 제작되었습니다.

단순한 만큼 요구사양도 충분히 낮아서 어지간한 경우에는 쾌적하게 플레이 할 수 있습니다.

 

게임의 배경

 

 

 

< 스토리 >

 

수 세기 전 마족의 습격으로 인류는 얼마 남지 않았고,

그 와중에 잘 숨어있던 닌자마을에 갑자기 악마군단이 몰려오고 서국의 용사가 늦게나마 악마들을 퇴치합니다.

그는 중요한 임무라면서 주인공에게 두루마리를 하나 맡기고 배달을 부탁합니다. 

전령(매신저)으로 선택받은 주인공은 악마들이 우글거리는 곳에서 위험한 곳을 지나 세상을 구할 배달임무를 시작합니다.

단순한 배달인 줄 알았던 전령에게는 생각보다 다양한 일이 주어지게 되고 이 주인공의 모험이 스토리 라인입니다.

 

어려운 함정들

 

 


< 게임의 진행 방식 >

 

크기가 제각각인 방의 입구와 출구가 있고 진행방향에 맞추어 앞으로 나아갑니다.

이 때 적들이나 다양한 함정이 길을 막아서기 때문에 매번 퍼즐을 풀듯이 방법을 찾아야 합니다.

세이브 포인트가 꽤나 자주있고 밟으면 자동으로 저장됩니다.

죽으면 가장 최근의 세이브 포인트로 이동하면서 한동안 큐라블이라는 악마가 따라다니면서 자원을 대신 획득합니다.

게임에 큰 재능 있지 않은 이상은 상당히 자주 만나야 하는 악마라 하는 대사도 다양합니다.

하지만 역시 계속 듣다보면 질리게 되더라고요.

 

액션 게임입니다.

 

 

 

 

< 액션과 조작 >

 

조작과 움직임이 복잡하지는 않고 주인공은 공격하거나 점프하고 수리검을 던집니다.

기본 움직임에 더해서 뜬 상태에서 물건을 때리면 공중도약을 할 수도 있는데 이 스킬이 많은 퍼즐에 응용 됩니다.

게임을 진행하면서 벽에 매달리거나 갈고리를 사용할 수도 있는데 아이템이 다양하지는 않지만 조합하면 복잡해집니다.

도트 그래픽처럼 보이지만 판정이 엄격하고 정교한 조작이 필요합니다.

맵의 구성이 꼼꼼하게 디자인 되어 얼핏 불가능해 보이는 구간도 조작을 통해 통과하면서 성취감을 느낄 수 있습니다.

 

힘의 봉인

 

 

 

< 수집품 > 

 

수집 컨탠츠로 힘의 봉인을 제공하는데 이 봉인이 45개나 되는데다가,

하나당 최소 1개의 전용 맵이 존재하며 어려운 퍼즐을 풀어야 합니다.

모두 힘의 봉인이 있는 곳까지 가면 되는 이동형 퍼즐이고 한번 성공하면 자동저장하며 일부는 숏컷도 제공합니다.
이 힘의 봉인을 수집하는 퍼즐들이 게임의 진수라고 할 수 있는 만큼 잘 디자인되어 있어,

모두 모아볼 것을 추천하지만 보상인 풍차 수리검이 그다지 좋지도 않고,

스토리랑은 완전 별개로 진행됨으로 스트레스를 느낀다면 스토리만 진행하셔도 패널티는 없습니다.

 

사람이 하라고 만들어 둔건지

 

 

 

< 비판 >

 

난이도가 꽤 어려워 조작이 정확해야 합니다. 난이도 자체는 게임의 특성이라고 치지만 조작이 어려웠습니다.

2단 점프가 없는 상황에서 점프액션으로 먼거리를 이동하는 기믹의 퍼즐이 상당히 많습니다.

그런데 점프키를 한번 누르고 땐 후에 다시 눌러야 활강하게 되는데 두 번 누르는 이 동작이 상당히 부담이였습니다.

활강 키를 주던가 아니면 누르고 있으면 자동으로 고점에서 활강이 발동되도록 했으면 좋았을 것입니다.

물론 여기는 난이도랑 관련된 부분이기는 하지만 그래도 조작이 부당하게 어렵다는 느낌을 받았습니다.

 

중간에 나오는 NPC 상인

 

 

 

< 총평 >

 

어렵습니다. 조작에 익숙하지 않는다면 난이도가 불가능에 가깝습니다.
근성으로 힘의 봉인 45개를 모두 모았지만 확장팩인 소풍소란은 포기했습니다.

게임의 디자인과 경쾌한 분위기는 좋았고 특히 상점의 상인과 나누는 만담을 무척 즐거웠습니다.

전투면에서도 중간중간 다양한 보스들과의 전투도 준비되어 있어 질리지 않는 복잡한 구성을 가지고 있습니다.

그러나 플레이를 하실꺼라면 최소한 어려운 조작을 할 수 있는 손가락과 하드한 플레이를 즐기는 맨탈이 모두 필요합니다.

이 모든게 준비되어 있으시다면 이 게임에 한번 도전해 보세요.

 

 

 

 

 

 

 

 

 

반응형
728x90

 

 

< 전화로 취소하기 >

 

TV를 보지 않습는다. 이사하면 수신료를 취소하기는 것을 먼저하는데요

이번에는 인터넷을 사용해서 했습니다.

하지만 한달이 넘도록 문의가 접수상태로 방치 되어 결국은 전화를 또하게 하네요.

"1588-1801" 로 전화하면 되는데 당연하다 할까 요즘에는 받는게 느려져 5분 정도 기다렸네요.

주소를 불러주고 취소를 접수했습니다.

 

몇일뒤에 전화가 와서 아래 내용을 확인했습니다.

예전에는 한방에 취소가 되었는데 요즘에는 절차가 늘었네요

 

① 미소지 확인서를 씁니다.

② 집에 TV가 없다는 사진을 두장 이상 각도별로 찍어서 보냅니다.

  사진은 다시 찍어오라고 하는 경우도 많습니다.

③ 인터넷 상세 내역서를 보냅니다.(KT에서 찾아서 보냈네요)

④ 모니터가 있는 경우 모니터 모델명도 찍어서 보내야 합니다.

 

자주하던 일인데 절차가 늘어서 번거로웠습니다.

 

미소지 확인서

 

아래는 인터넷으로 신청하는 방법입니다.

하지만 그냥 전화로 하는것이 빠른 것 같습니다.

 

 

 


 

< 인터넷으로 해지하기 >

 

① KBS에 들어가기서 로그인하기

 

KBS의 주소는 http://www.kbs.co.kr 입니다.

이곳으로 들어가 로그인을 해야 하는데 수신료 관련 업무를 보려면 SNS 아이디로 간편로그인하면 안됩니다.

"직접 가입하고 로그인" 해야 합니다.

수신료 취소를 위해서 처음으로 가입해서 로그인했네요.

 

로그인하기

 

 

 

② 수신료 홈페이지에 들어갑니다.

 

로그인을 한 후에 우 상단에 "수신료" 매뉴를 통해서 수신료 페이지로 들어갑니다.

 

수신료 페이지로 들어가기

 

 

③ 민원 신청 매뉴로 들어갑니다.

 

매뉴에서 [수신료 관련 1:1 민원 신청] - [TV신규등록/TV말소(미소지 등)]을 차례로 클릭해 주면 됩니다.

 

신청하기로 들어가기

 

 

 

④ TV 등록 말소를 하는 매뉴에 접근합니다.

 

TV 등록 말소를 신고하려 하면 TV 수상기가 있으면 추징금을 거둔다고 합니다.

특정 물건은 나라에서 준게 아니면 없는게 당연한데 있는 걸 증명하는 것도 아니고 없는걸 증명해야 하다니 ...

회사에서 대부분을 보내는 저는 TV를 살 돈도 아깝고 볼 시간도 아깝습니다.

 

TV 말소

 

다행히 꼭 증명이 필요한 건아니니 살짝 투덜거리고 지나가도록합니다.

 

 

 

⑤ 여기서 잠깐, 전기 고객번호 나 수신료 관리번호가 필요하다고 합니다.

 

집에 지로가 날아오시는 분들은 전기세나 TV 수신료 고지서에 필요하다고 합니다.

저는 인터넷으로 처리하는데 어딜 찾아봐도 없더군요. 그래서 한전에 들어갔습니다.

한전 홈페이지에서 또 가입하고 매뉴이 [마이] - [고객번호 등록/조회] - [아파트 세대계약번호]에서 확인할 수 있었습니다.

 

주소입력하기

 

 

 

⑥ 다시 KBS로 돌아가서 신고서를 작성하고 신고합니다.

 

다시 신고를 했습니다.

시청자 상담실에서 기계적으로 메크로 답변이 온 것으로 보니 그리접수가 된 모양입니다.

 

메일로 접수된 것 확인

 

 

 

⑦ 진행이 안되는 것을 확인하고 전화로 신청한다.

 

안되면 뭔 이유인지 알려줘야 알 꺼 아닙니까?

한달을 기다렸지만 뭔가 처리가 안되고 수신료는 또 신청되었습니다.

취소 접수를 인터넷으로 받는건 낙시입니까 뭐가 잘못되었으면 연락이라도 와야지.

여튼 전화로 다시해서 처리했습니다.

 

 

320x100

 


 

 

조금 취소하다보니 짜증났습니다.

아니 지들이 TV 사라고 돈은 준것도 아니고 가난해서 뭐라도 아낄라고 보니까,

새벽부터 저녁까지 일하느라 TV 볼 시간도 없어 안사는건데,

TV가 있는 걸 증명하라면 모르겠는데 없는걸 증명하라니 무슨 갑질도 이런 갑질이있는지,

더러워서라도 TV는 안살껍니다.

반응형

+ Recent posts