이전 글에서는 공 하나가 화면 안에서 생각없이 튕기는 내용이었다.

 

 

Javascript 캔버스에서 움직이는 공 그리기

유튜브에서 브라우저에서 각종 도형의 움직임을 Javascript로 구현하는 걸 보고 반해서 바로 공부를 시작. 이제서야 조금씩 머리속에서 그림이 그려져가고 있다. bouncing-ball-3.bryanko555.repl.co 이건 그

mrkool.tistory.com

이번에는 컴퓨터의 강점을 살려, 공의 갯수를 확 늘리게되면 이제 좀 볼만해진다.

이전에는 ball 클래스를 만들어놓고 공을 하나만 만들었었는데, 이번에는 초기화 함수, init()에서 공을 여러개 생성하고,

animate() 함수에서 그 공들을 매 순간 업데이트 할 때마다 계산해준다.

 

function init(){ // 공의 갯수만큼 공의 객체 생성

  for(i=0;i<ballNumber;i++){

    balls[i] = new Ball(canvas.width*0.5, canvas.height*0.5)

   }

}

 

function animate(){ // 매 프레임마다 벌어지는 일들

   ctx.fillStyle='rgba(255,255,255,0.8)'; // 전체 화면 지우기. 하얀색의 alpha값을 변경함에 따라 공의 잔상이 달라진다.

   ctx.fillRect(0,0,canvas.width,canvas.height);

   for(i=0;i<ballNumber;i++){

      balls[i].update();

      balls[i].draw();

    }

}

 

위 데모에서는 30개의 공을 그렸는데, requestAnimationFrame()이 1초에 60번 동작하고, 그 때마다 30개 공의 좌표를 이동시키고 그림을 그리고 벽에 닿았는지 판단해준다. 문돌이에게는 놀라운 일이다. ㅎ

 

다양성을 주기 위해서 각 공마다 랜덤 특성을 부여했다.

시작할때 공이 랜덤한 방향으로 날라가고,

    this.angle = (Math.random()*(Math.PI*2));

공의 색깔이 랜덤하게 생성되고, 

    this.c = 'rgba('+Math.random()*255+','+Math.random()*255+','+Math.random()*255+')';

공의 크기를 다르게 하고,

    this.size = 10+Math.random()*20;

공이 날라가는 속도를 다르게 했다. 

    

this.power = Math.random()*3+2;

 

아예 공의 수를 200개로...

 

이 공이 움직이는 것처럼 보이는 이유가, 매 프레임마다 캔버스 전체를 하얀색 상자를 그려서 덮어버리고 각 공들을 이동한 좌표로 그려주고, 다음 프레임에서 다시 다 지우고, 공들을 다시 그리고 ... 이렇게 반복함으로써 공들이 움직이는 것처럼 보이는 것인데...

캔버스를 덮을 하얀색의 투명도(alpha값)을 다르게 함에 따라서 공의 궤적을 다르게 볼 수 있다.

alpha =1 

alpha = 0.5

alpha = 0.1

 

전체 코드 :

window.onload = function () {
 
  const canvas = document.getElementById('canvas');
  const ctx = canvas.getContext('2d');
  canvas.width = window.innerWidth-15;
  canvas.height = window.innerHeight-15;
 
  balls=[];
  ballNumber = 20;
 
  class Ball{
    constructor(x,y){ // ball의 기본 속성들을 정의 
      this.x = x;
      this.y = y;
      this.c = 'rgba('+Math.random()*255+','+Math.random()*255+','+Math.random()*255+')'// 공의 색깔을 random으로 설정
      this.size = 10+Math.random()*20;
      this.angle = (Math.random()*(Math.PI*2));
      this.power = Math.random()*3+2;
      this.directionX = this.power * Math.cos(this.angle);
      this.directionY = this.power * Math.sin(this.angle);
    }
    update(){ // 프레임마다 속성들을 변화시킴 
      this.y += this.directionY; 
      this.x += this.directionX;
      if(this.y+this.size>canvas.height || this.y-this.size<0){ // 바운드 처리
        this.directionY *= -1;
        }
      if(this.x>canvas.width-this.size ) {
        this.x = canvas.width-this.size;
        this.directionX *= -1;
      } else if (this.x-this.size < 0){
        this.directionX *= -1;
      }
    }
    draw(){ // 넘어온 속성값대로 캔버스에 그림을 그려줌
       ctx.fillStyle= this.c;
       ctx.beginPath();
       ctx.arc(this.x, this.y, this.size, 0, Math.PI*2true);
       ctx.closePath();
       ctx.fill();
       ctx.lineWidth = 2;
       ctx.strokeStyle= 'black';
       ctx.stroke();
    }
  }
 
  function init(){ // 공의 갯수만큼 공의 객체 생성
      for(i=0;i<ballNumber;i++){
        balls[i] = new Ball(canvas.width*0.5, canvas.height*0.5)
      }
  }
 
  function animate(){ // 매 프레임마다 벌어지는 일들
    ctx.fillStyle='rgba(255,255,255,0.1)'// 전체 화면 지우기. 하얀색의 alpha값을 변경함에 따라 공의 잔상이 달라진다.
    ctx.fillRect(0,0,canvas.width,canvas.height);
    for(i=0;i<ballNumber;i++){
      balls[i].update();
      balls[i].draw();
    }
 
    window.addEventListener('resize',function(){ // 화면 크기가 변하면 캔버스 크기도 변경해줌
      canvas.width=window.innerWidth;
      canvas.height=window.innerHeight;
    })
    requestAnimationFrame(animate);
  }
 
  init();
  animate();
 
  }
cs

다음에는 중력까지 가미해보자.

 

 

자바스크립트를 깨우치다:객체로 풀어보는 JavaScript의 원리

COUPANG

www.coupang.com

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

지난 글에서는 공이 상자안을 끝없이 튕기는 것을 그려봤는데, 이번에는 중력값을 넣어서 실제에서 공이 튕기는 것처럼 해보자. 

실제에서는 공이 튕기는 힘이 조금씩 줄어들고,

좌우로 움직일때도 속도가 줄어들어야 한다.

실제에서 공이 자유낙하를 한다면 아래와 같을 것이다.

중력이 있기 때문에 단위시간에 떨어지는 거리가 달라지고(0.2, 0.4, 0.6...)

반발해서 올라갈 때는 그와 반대로 올라갈 수록 단위시간의 이동거리가 줄어든다.

이것을 코딩에 반영해줘야 한다.

 

중요한 부분은 update() 이다.

아래에서는 gravity 변수가 매 프레임마다 0.2씩 더 늘어나게 해줬다.

그리고 바운드 될 때마다 gravity에 -1을 곱해서 움직이는 방향을 바꿔준다.

그런데, 바운드 될때마다 다시 올라가는 높이가 이전보다는 낮아져야 되기 때문에 -0.9로 수치를 정했다.

이 수치를 -1.1 이렇게 바꾸면 바운드 되서 이전보다 더 높이 올라간다.

 

x방향도 마찬가지로, 처음에는 5만큼 늘어나지만, 그 다음부터는 0.995를 곱해서 점점 늘어나는 속도가 줄어든다.

좌우 벽에 닿으면 -1을 곱해서 방향이 바뀐다. 

window.onload = function () { // 스크립트 로딩이 완료된 후부터 내용을 시작
 
  const canvas = document.getElementById('canvas');
  const ctx = canvas.getContext('2d');
  canvas.width = window.innerWidth;
  canvas.height = window.innerHeight;
 
  class Ball{
    constructor(x,y){ // ball의 기본 속성들을 정의 
      this.x = x; // x좌표
      this.y = y; // y좌표 
      this.c = 'red'// 시작할때 공의 색깔
      this.size = 20// 공의 반지름
      this.power = 5// 공의 움직임 세기
      this.gravity = this.power; // 공이 상하로 움직이는 값
      this.directionX = 5; // 공이 좌우로 움직이는 값
    }
 
    update(){ // 프레임마다 속성들을 변화시킴 
      // y값의 변동을 계산
      this.y += this.gravity; 
      this.gravity += 0.2 // 중력 값
      console.log(this.gravity)
      if(this.y+this.size >= canvas.height || this.y-this.size <= 0){ // 상하 바운드 처리
      this.gravity *= -0.9// 상하에 닿으면 방향을 전환
      }
 
      // x값의 변동을 계산
      this.x += this.directionX;
      this.directionX *= 0.995;
      if(this.x+this.size > canvas.width || this.x-this.size<0){
      this.directionX *= -1;
      }
    }
 
    draw(){ // 넘어온 속성값대로 캔버스에 원을 그려줌
       ctx.fillStyle= this.c;
       ctx.beginPath();
       ctx.arc(this.x, this.y, this.size, 0, Math.PI*2true);
       ctx.closePath();
       ctx.fill();
    }
    }
 
  function init(){ // 그려질 공의 초기 좌표 설정
      ball1 = new Ball(canvas.width*0.5, canvas.height*0.5)
  }
 
  function animate(){ // 매 프레임마다 벌어지는 일들
    ctx.fillStyle='rgba(255,255,255,0.5)';
    ctx.fillRect(0,0,canvas.width,canvas.height); // 캔버스 전체를 색칠해서 내용을 지워준다
    ball1.update(); // ball1의 좌표 등을 업데이트 한다
    ball1.draw(); // 업데이트된 내용으로 ball을 새로 그린다.
    requestAnimationFrame(animate);
  }
 
  init(); // 공의 초기 좌표를 설정하고, 
  animate(); // 프레임마다 공을 그려준다. 
 
  }
cs

 

혹시 몰라서 html 부분,

<body>
   <canvas id="canvas">   </canvas>
</body>
cs

 

이제 여기에서 배열을 사용해서 공의 수를 확 늘려주면, 좀 볼만한 그림이 나온다.

다음 시간에...

 

 

 

자바스크립트를 깨우치다:객체로 풀어보는 JavaScript의 원리

COUPANG

www.coupang.com

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

회사에서 날짜를 요일로 바꾸기를 달력을 보면서 하다가 '이건 아니다!'라는 생각이 들었다. 

찾아보니 바로 간단한 방법이 '짠~'

날짜에 '셀 서식'을 적용해서 요일로 보이게 하는 방법이다.

 

먼저 셀에 일반적인 날짜를 넣어주자.

아래의 경우에는 월,일이 나눠져있어서 date함수를 써서 날짜를 입력해줬다.

 = date(년도,월,일)

여기서 날짜를 전체 선택해서 '셀 서식' 선택. (단축키 : ctrl + 1)

여기서 맨 아래 '사용자 지정'을 선택하고 '형식'에 필요한 요일 형태로 입력을 해주면 끝.

 aaa  -> 수

 aaaa -> 수요일

 ddd  -> Wed

 dddd -> Wednesday

 

단, 이것은 '2020-12-02'라는 값을 '수요일' 형식으로 보여주는 것이지, 

'수요일'이라는 텍스트 값이 있는 것은 아니다. 

 

이런 간단한 팁이 모여서 내 실력이 되고, 내 시간을 절약해준다. 

모르면 찾아보고, 찾아보는 것도 해볼 수록 잘 찾을 수 있다.

 

 

 

직장인을 위한 실무 엑셀:실전! 비즈니스 엑셀 완전 정복

COUPANG

www.coupang.com

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

유튜브에서 브라우저에서 각종 도형의 움직임을 Javascript로 구현하는 걸 보고 반해서 바로 공부를 시작.

이제서야 조금씩 머리속에서 그림이 그려져가고 있다. 

 

브라우저 안에서 계속 튕기는 공

bouncing-ball-3.bryanko555.repl.co

 

이건 그냥 단순하지만, 여기에다 배열과 반복이 더해지면 그럴듯한 그림이 그려진다. 

bouncing-ball-1.bryanko555.repl.co

 

오늘은 첫번재 기본적인 바운드 되는 내용부터 정리한다. 

html에 canvas를 설정하고, css에서 화면 가득 채우는 건 기본.

바로 Javascript로 넘어가자.

window.onload = function () { // 스크립트 로딩이 완료된 후부터 내용을 시작
 
  const canvas = document.getElementById('canvas');
  const ctx = canvas.getContext('2d');
  canvas.width = window.innerWidth;
  canvas.height = window.innerHeight;
  class Ball{
    constructor(x,y){ // ball의 기본 속성들을 정의
      this.x = x;
      this.y = y;
      this.c = 'rgba('+Math.random()*255+','+Math.random()*255+','+Math.random()*255+')'
// 시작할때 공의 색깔을 랜덤하게 설정. 이거 많이 사용하게 된다.
      this.size = 20// 공의 반지름
      this.angle = (Math.random()*(Math.PI*2)); // 공이 출발할 각도
      this.power = 5// 공의 세기
      this.directionX = this.power * Math.cos(this.angle); // 공이 좌우로 움직이는 값
      this.weight = this.power * Math.sin(this.angle); // 공이 상하로 움직이는 값
    }
    update(){ // 프레임마다 속성들을 변화시키는 함수
      this.y += this.weight; // y값을 계속 증가/감소 시킨다
      this.x += this.directionX; // x값을 계속 증가/감소 시킨다.
 
     
      if(this.y+this.size>canvas.height || this.y-this.size<0){ // 상하 바운드 처리
        this.weight *= -1// 상하에 닿으면 방향을 전환
      }
      if(this.x>canvas.width-this.size || this.x-this.size < 0) { // 좌우 바운드 처리
        this.directionX *= -1// 좌우에 닿으면 방향을 전환
      }
    }
    draw(){ // 넘어온 속성값대로 캔버스에 원을 그려주는 함수
       ctx.fillStyle= this.c;
       ctx.beginPath();
       ctx.arc(this.x, this.y, this.size, 0, Math.PI*2true);
       ctx.closePath();
       ctx.fill();
    }
  }
 
  init = () => { // 그려질 공의 개체를 설정하는 함수
      ball1 = new Ball(canvas.width*0.5, canvas.height*0.5)
  }
  function animate(){ // 매 프레임마다 그림을 새로 그려주는 함수
    ctx.fillStyle='rgba(255,255,255,0.5)'; // 매 프레임마다 캔버스를 통째로 칠하는 색깔. 맨 마지막의 alpha값에 따라 공의 잔상이 남는 정도가 달라진다.
    ctx.fillRect(0,0,canvas.width,canvas.height); // 캔버스 전체를 색칠해서 내용을 지워준다
    ball1.update(); // ball1의 좌표 등을 업데이트 한다
    ball1.draw(); // 업데이트된 내용으로 ball을 새로 그린다.
    window.addEventListener('resize',function(){ // 화면 크기가 변하면 캔버스 크기도 변경해줌
      canvas.width=window.innerWidth;
      canvas.height=window.innerHeight;
    })
    requestAnimationFrame(animate);
  }
  init(); // 공의 초기 좌표를 설정하고,
  animate(); // 프레임마다 공을 그려준다.
 
  }
cs

구조를 간단히 말하자면, 

  ] 그려질 ball의 기본 속성을 정하는 부분 : Ball.constructor(x,y)

  ] ball이 움직일 때마다 x,y 값을 변경해주고, 테두리에 부딪치면 -1을 곱해서 반대로 움직이게 하는 부분 : Ball.update()

  ] 생성된 ball들을 canvas에 그려주는 부분 : Ball.draw()

  ] 위의 함수들을 약 1초에 60번씩 호출해서 반복시키는 부분 : animate()

 

위의 것이 기본적인 구조이고, 저 구조 안에서 공의 개수를 늘리고, 중력값을 주고, 색깔을 변하는 등의 변화를 주면 점점 그럴듯한 그림으로 변해간다. 

앞으로 계속 변형을 늘려가보자.

 

 

자바스크립트를 깨우치다:객체로 풀어보는 JavaScript의 원리

COUPANG

www.coupang.com

 

이 다음에는 공을 여러개로 늘려서 움직여보자.

 

Javascript 캔버스에서 튕기는 공들 (w/o 중력)

이전 글에서는 공 하나가 화면 안에서 생각없이 튕기는 내용이었다. Javascript 캔버스에서 움직이는 공 그리기 유튜브에서 브라우저에서 각종 도형의 움직임을 Javascript로 구현하는 걸 보고 반해

mrkool.tistory.com

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

sample.xlsx
0.01MB

실무에서 자주 발생하는 경우다.

아래와 같이 여러 셀에서 각 표의 첫번째 행의 값을 반복해서 입력해야 할 경우가 생긴다. 

이전에는 if 함수로, 빈 셀이면 윗 셀의 값을 넣고, 빈 셀이 아니면 그대로 놔두고 어쩌고. 복잡하게 했었는데, 간단한 방법이 있었다. 아래 그림처럼...

입력할 영역을 선택하고, '홈' 탭에서 '찾기 및 선택' -> '이동옵션(S)' -> '빈 셀(K)' 선택 -> 수식 입력 ( =(첫번째 셀의 바로 윗 셀)) -> ctrl+enter (중요!!) -> 전체 선택해서 값 복사로 수식 없애고 마무리

 

요약해서 말하면, 빈 셀들만 선택하고, 그 빈셀들이 모두 바로 위의 셀을 참조하게 하는 방법이다. 

 

단축키로 하자면, 영역선택 -> ctrl + G -> alt + S -> K -> enter -> '='입력 후 방향키 위로 한 번 -> ctrl + enter 

 

한 번 연습해두면 나중에 업무시간 절약에 도움 될 일이 분명히 생긴다. 

 

비슷하게 활용하면, 여러 곳의 빈 셀에 값을 채워넣을때도 활용 할 수 있겠다.

배우는 건 금방이지만, 그 잠깐의 시간은 앞으로 많은 시간을 절약해 줄 수 있다. 

 

예제 파일 첨부. 

 

 

직장인을 위한 실무 엑셀:실전! 비즈니스 엑셀 완전 정복

COUPANG

www.coupang.com

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

실무를 하다 보면 아래와 같이 자료를 정리해야할 필요가 생긴다.

보통 왼쪽의 데이터는 ERP에서 얻어지는 자료 형태이고, 

오른쪽의 데이터는 보고서를 작성하기 위해 만들어야 하는 자료 형태이다.

 

언제나 반복적인 업무가 생기면, 이걸 개선할 수 없을까 고민을 해봐야 한다.

수식은 아래와 같다.

=TEXTJOIN(", ",TRUE,OFFSET($D$1,MATCH(J5,C:C,0)-1,0,COUNTIF(C:C,J5),1))

 

함수 설명을 하자면,

TEXTJOIN(a,b,c,d) : c~d의 텍스트들을 a의 구분자를 중간에 삽입해가면서 합친다. b는 중간에 빈 칸이 있으면 포함할까, 말까의 옵션이다.

쉽게 보면 아래와 같다.

MATCH(a,b,0) : a값을 b 범위에서 찾아서 몇 번째에 있는지 알려준다.

아래에서 D25:28범위에 '현대'가 두 번째에 있기 때문에 2값을 보여준다.

OFFSET(a,b,c,d,e) : 엑셀 중수 이상으로 올라가기 위한 함수라고 생각한다.

기준점 a에서 시작해서 b행,c열만큼 떨어진 셀부터 d행,e열만큼 범위를 잡는다.

아래에서는 B4부터 시작해서 3x1만큼 떨어진 C7에서 2x2의 범위를 가져왔다.

이제 다시 처음으로 돌아가서,

오른쪽 '품목'을 왼쪽에서 찾아서, 그 찾아진 셀부터 동일한 품목이 몇 개나 있는지 확인해서 그 숫자만큼 '고객사'의 범위를 잡고 TEXTJOIN 함수로 합쳐주면 된다.

위 식을 풀어 말하자면, 'KO1745' 품목(J5)을 C열에서 찾았더니(MATCH) 5번째 행에 있고, 그 품목이 3개 있어서(COUNTIF), 고객사들이 있는 열, $D$1부터 아래로 5 x 0 만큼 이동하고 그 셀부터 3 x 1만큼 범위로 잡아서(OFFSET), 콤마로 구분해서 합쳐줬다.(TEXTJOIN)
(설명 해놓고 보니 정말 설명 잘 한거 같다. ^O^)

 

예제 파일 첨부한다.

 

 

 

직장인을 위한 실무 엑셀:실전! 비즈니스 엑셀 완전 정복

COUPANG

www.coupang.com

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

엑셀_예제2.xlsx
0.03MB

 

큰 화면을 보고 싶어서 17인치 노트북을 샀다. (집에서 쓸거니까 휴대성은 고려 안했다.)

그런데, 이게 쓰다보니 듀얼 모니터가 아쉽다.  그래서 모니터를 장만했다.

모니터를 장만하고 보니 모니터암이 눈에 띄었다. 딱 느낌이, '어머, 이거 사야해!!'

그래, 이걸 사면 코딩에도 편하겠고, 주식 창 보기에도 좋겠고.... 그냥 뽀대가 날 거 같다.

거북목에도 좋다는데 안 살 이유가 없다. 

적당한 가격 제품으로 바로 지름!!

 

 

KALOC 무중력 모니터암 거치대 브라켓 DS90 17-32형

COUPANG

www.coupang.com

중국산 제품을 수입해서 파는 거 같은데, (설명서가 중국어)

결론적으로, 가성비 좋은 제품이다. 모니터암의 역할은 다하면서 3만원이 안되는 가격...

 

완성샷 

동작 범위가 의외로 넓다. 상,하,좌,우.... 

위 사진은 내가 책상 구석에 설치했는데, 설치하고보니까 움직일 수 있는 걸 더 활용하고자 책상 가운데로 옮기게 된다.

내 노트북과 아들 녀석 노트북 .HDMI에 각각 연결해둬서 각각 사용할 때 좌우로 모니터를 이동해서 볼 수 있게 했다.

 

설치가 생각보다 쉽다. 

처음 뜯어놓으면 난감한데, 설치방식을 결정하고 나면 간단하다. 

구멍이 있는 책상에 설치하는 것과 내가 한 것처럼 책상에 물려서 세우는 방식이 있다.

책상에 클램프로 물리고, 모니터에 나사 4개로 고정하면 끝.

 

9kg 모니터까지 설치 가능하다고 하는데, 내 모니터가 28인치인데 6kg 정도 하고, 

32인치 제품들은 6~8kg 정도하니, 32인치까지는 문제 없겠다. 

(그보다 더 큰 모니터 쓰는 돈 많으신 분들은 더 좋은 모니터암을 사시면 되겠다.)

 

처음 설치해놓고 좀 더 높이 올라갔으면 했는데, 실제로 사용해보니 충분한 높이다.

아래와 같이 17인치 노트북 모니터를 가리지 않을 정도이니...

아주 만족스럽다. 

프로페셔널해보인다. ㅎㅎ

아직 설치안하고 있다면 강추 아이템이다.

 

설치하고보니 책상이 넓어져서 기분이 좋아졌는데, 이제는 키보드 케이블이 영 눈에 거슬린다. 이것도 무선 키보드로 바꿔버릴까...

 

'무중력'이라고 하는데, 암에 장력이 있어서 모니터 위아래 조정이 쉽게 된다는 거라고 이해하면 된다.

----------------------------------------------

설치 후 2개월 지났는데, 모니터 암 설치하길 정말 잘했다. 

남자 녀석 두 놈이 뛰어다니는데, 암에 묶여 있지 않았더라면 진작에 모니터 바닥에 떨어져서 박살났을거다.

 

 

 

KALOC 무중력 모니터암 거치대 브라켓 DS90 17-32형

COUPANG

www.coupang.com

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

 

사회생활에서 여러가지 자료를 만들게 되는데, 같은 내용이라도 어떻게 보여주느냐에 따라 그 효과는 크게 차이가 난다.

보기좋은 떡이 먹기도 좋다는 말이 그냥 지나칠 말이 아니다. 그 약간의 차이의 누적이 점점 경쟁력의 차이를 벌여나가는거다.

 

아래의 일반적인 표보다는 '표 형식'을 적용한 것이 좋고, 거기다 '슬라이서'를 껴놓으면 일반적인 엑셀 수준에서 한 걸음 더 나아가 보인다. (모르는 사람이 보기에는...)

일반 표 표 형식 적용 슬라이서 필터 사용

슬라이서 적용 화면 ↓↓

슬라어서는 간단히 '필터' 기능이다. 그런데 종전의 필터처럼 작은 화면에서 선택하는 것보다는 훨씬 편하게 필터링을 할 수가 있다. 

자료를 받아보는 사람 입장에서는 상당히 기특하게 보이지 않겠는가 ㅎ

 

불편한 필터

슬라이서 적용은 간단하다.

범위에 커서를 놓고 '표'로 지정 (단축키 CTRL + T)

표로 변환 후, '삽입'에서 '슬라이서' 클릭

그러면 어떤 항목을 필터링 대상으로 할지 선택한다.

그러면 이런 무뚝뚝한 애가 생겨나는데, 여기다 약간의 디자인을 입히는게 좋겠다.

슬라이서 설정은, 슬라이서를 선택하고 상단 메뉴 우측에 '옵션'에서 한다.

먼저 1열로 되어있는 이름을 가로로 하는게 좋겠다. 열의 수를 적당히 늘려준다.

이대로 문서 적당한 위치에 배치하면 끝나겠지만, 

슬라이서의 색깔을 바꾸거나 테두리를 없애고 싶다면,

이건 좀 번거로워진다.

 

기존에 슬라이서의 디자인 서식을 복제하고, 그 복제된 서식을 수정한 뒤에 사용해야 한다.

슬라이서 테두리 없애기

간단한 스타일 변경은 번거롭지만, 세부적인 설정이 가능하다. 마우스가 오버되면 다른 색깔을 설장하는 등...

 

여기서는 단순한 표의 필터를 대신하는 용도로 슬라이서를 사용했지만, 이 슬라이서는 피벗테이블과 함께 사용할 때 효과가 극대화된다. 

그건 다음 포스트에서... 

 

 

 

 

 

직장인을 위한 실무 엑셀:실전! 비즈니스 엑셀 완전 정복

COUPANG

www.coupang.com

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

+ Recent posts