MayBeMayBe

MayBeMayBe

Archive for the ‘Programming’ Category

tips – How to use the INDEX and MATCH worksheet functions with multiple criteria in Excel…,,

leave a comment »

 

..

MS – How to use the INDEX and MATCH worksheet functions with multiple criteria in Excel

https://support.microsoft.com/en-us/kb/214142

..

StackOverflow – Lookup using INDEX and MATCH with two criteria

http://stackoverflow.com/questions/18767439/lookup-using-index-and-match-with-two-criteria

..

How to VLOOKUP with Multiple Criteria Using INDEX and MATCH

http://www.exceltactics.com/vlookup-multiple-criteria-using-index-match/

..

**

Superuser – When to use Ctrl+Shift+Enter and when to use Enter in Excel?

http://superuser.com/questions/674566/when-to-use-ctrlshiftenter-and-when-to-use-enter-in-excel

..

..

Select multiple criteria in MS EXCEL

..

MS Excel Sheet에 위와 같은 표가 있다고 해 보자.

단순한 Vlookup 함수와는 다르게, Index match 함수를 사용해서 값을 골라야 할 때가 있다.

위에서 보인 예제를 본다면, A열, B열, C열, D열, E열 조건을 만족하는 값을 F열에서 고를 때에는 단순하게 Vlookup 함수를 사용할 수는 없고 Index, Match 함수를 사용해야 하는데 여기에는 약간 문제가 있다.

Index, Match 조합을 할려면 조건을 하나 밖에 사용할 수 없는데, 위에 든 링크 예제를 보면 여러 조건일 때도 응용해서 사용할 수가 있다.

..

 

=INDEX(Data!$A$1:$F$1000000,MATCH(1,(Data!$A:$A=$A3)*(Data!$B:$B=C$1)*(Data!$C:$C=$D$304)*(Data!$E:$E=$D$305),0),6)

 

참고로, 위와 같은 식을 사용해서는 꼭 Ctrl + Shift + Enter키늘 눌러서 식을 마무리 해야 한다. 그냥 Enter 키를 누르고 식을 마무리 하면 작동을 하지 않는다.

..

..

여러조건을 만족하는 Cell을 고를 때, 처음에는 SumIFs() 함수를 사용하였었다. Sumifs() 함수를 보면 여러가지 조건들을 만족하는 Column Cells 값에 대해 Sum을 하라는 것인데 이 함수를 사용하면 조금문제가 있다.

..

..

..

여하튼, 약 500,000개에 약간 미치지 못하는 F열에 대해서 작업을 하니 컴퓨터가 멈춘 듯이 돌아간다.

..

MS – SUMIFS function

https://support.office.com/en-us/article/sumifs-function-c9e748f5-7ea7-455d-9406-611cebce642b

..

Written by MayBeMayBe

March 6, 2016 at 01:57

Posted in Programming

Tagged with

MS Excel – Date function…,,

leave a comment »

..

..

Ex 003

..

MS Excel에서 날짜에 대해 무엇인가를 할 때, 월말에 해당하는 끝 날짜 때문에 불편했던 적이 있다.

특히 매해 2월에 해당하는 끝날이 28일인가, 29일인가를 가늠해야 할 때가 많은데, 이럴 때는 다음과 같이 해도 된다.

..

아래 식은 MS Excel Cell E2에 대한 식이다.

=DATE(YEAR(A2), MONTH(A2)+1, DAY(A2)-1)

..

위에 있는 그림에서 1번 부분은 입력할 때 연월(Year, Month) 부분만 입력하면 MS Excel 내부에서 연월일에 해당하는 “일” 부분은 시작일 “01”을 인식하게 되어 있다.

그림에서 2번 부분…

..

그런데 이런 “일(day)” 부분을 각 해(Year)와 월(Month)에 해당하는 마지막 날(day)로 바꾸고 싶다면, 위와 같은 식을 사용하면 된다. 다른 열에다가 입력을 하고, 변환된 값을 복사한 후 “값”으로 붙여놓기..

1992년 2월은 마지막 날이 29일이고 1993년 2월은 마지막 날이 28일인가 보다.

..

사용한 식은 MS Excel에서 기본으로 제공하는 Date() 함수이다.

Year(), Month(), Day() 함수는 말 그대로 임.

참고로,

=DATE(YEAR(A2), MONTH(A2)+1, 0)

..

과 같이 입력해도 된다.

..

Written by MayBeMayBe

January 15, 2015 at 22:32

Posted in Programming

Tagged with

MS Excel – Index, match functions…,,

leave a comment »

..

MS – Index functin

http://office.microsoft.com/en-001/excel-help/index-function-HP010069831.aspx

..

MS – Match Function

http://office.microsoft.com/en-001/excel-help/match-function-HP010062414.aspx

..

Ex 001

..

위와 같은 표(Table?)가 있다고 해 보자.

표를 보면 각 행(row)마다 연도(year)로 되어 있고, 각 열(column)마다 학 행에 대한 월(month)로 되어 있다.

이렇게 연월표로 작성된 테이블을 하나의 열(column)에 대하여 각 연도와 월로 결합된 테이블로 다시 만들 수 있다.

사용할 함수는 위에 링크를 단 Index, Function MS Excel 함수를 사용하자.

..

Ex 002

..

위에 있는 그림을 보면, 크게 숫자가 있는 세 부분으로 나눌 수 있다.

1번 부분은 연월표로 작성된 표가 있는 부분, 2번은 이렇게 행과 각 열들로 분산하여 연월표로 있는 부분을 나머지 3번 부분은 2번에 대하여 1번에 있는 표 값을 하나의 열(column)으로 재 작성한 결과를 보여주는 것이다.

..

2번 부분은 1번 부분에 있는 연도와 각 월에 대하여 하나의 열(A열)에 대하여 직접 입력하면 된다.

위에 있는 부분은 1992년 01월 ~ 2014년 12월까지 A열을 확장하였다.

..

이렇게 2번에서, 하나의 열에 대하여 길게 쓰여진 값에 대하여 1번에 있는 연월표를 변환하면 되는데….

사용한 식은 다음과 같다.

=INDEX($Y$2:$AK$25, MATCH(YEAR($A3), $Y$2:$Y$25, 0), MATCH(MONTH($A3), $Y$2:$AK$2, 0))

바로 위에 있는 식은 3번 부분에 있는 3행 W열에 대한 식이다.

Index 함수에서 첫번째 매개변수 부분은 $Y$2:$AK$25인데, 이것은 1번 부분에 있는 테이블을 가르키는 값이다. MS Excel에서 사용하는 절대주소와 상대주소 체계에 대한 설명은 생략한다.($에 대한 설명임.)

..

위에서 사용한 Index 함수에서 첫번째 매개변수는 원본이 있는 테이블을 가르키고, 두번째 매겨변수는 첫번 째 매개변수에 있는 테이블에서 행(row)을 세번 째 매개변수는 열(Column)을 사용하게 되어 있다.

Index 함수에서 사용하는 두번 째 매개변수 Match(Year($A3), $Y$2:$Y$25, 0) 부분에서….

Year() 함수는 Year 함수에 있는 매겨변수 A3가 위 그림에서 가르키는 값 “1992/01″에서 연도(Year)를 가져올려고 쓴 함수이다. 이렇게 A열에 있는 각 값(==> Year)은 1번 표에 있는 “Y2:AK25″에서 행(row)을 선택하기 위해서 쓰이고 있다.

Match(Year($A3), $Y$2:$Y$25, 0) 부분에서 가르키는 값은 위에 있는 그림대로 한다면, 다시 다음과 같이 변환될 것이다.

Match(1992, $Y$2:$Y$25, 0)

결과적으로, 위에 있는 함수는 “Y2:Y25″에 있는 테이블에서 “1992”가 있는 부분을 찾으라는 뜻이다.

..

마찬가지로, 위에 있는 Index 함수에서 MATCH(MONTH($A3),$Y$2:$AK$2,0) 부분은 A3가 가르키는 “1992/01″에서 월 부분을 가져오고(month(A3) 함수에서), 그 월에 해당하는 값을 테이블 “Y2:AK2“에서 찾으라는 뜻이다.

MATCH(MONTH($A3), $Y$2:$AK$2, 0)

===> MATCH(1, $Y$2:$AK$2,  0)

..

이렇게 하면, 위에 있는 그림에서 W3 Cell에 있는

=INDEX($Y$2:$AK$25, MATCH(YEAR($A3), $Y$2:$Y$25, 0), MATCH(MONTH($A3), $Y$2:$AK$2, 0))

함수는 다음과 같이 중간 값으로 변환이 될 것이다.

=INDEX($Y$2:$AK$25, MATCH(YEAR($A3), $Y$2:$Y$25, 0), MATCH(MONTH($A3), $Y$2:$AK$2, 0))

==>

=INDEX($Y$2:$AK$25, MATCH(1992, $Y$2:$Y$25, 0), MATCH(1, $Y$2:$AK$2, 0))

==>

=INDEX($Y$2:$AK$25,  1, 1)

..

마찬가지로 W4 Cell에 있는 값도 A4 Cell에 있는 “1992/02″에 해당하는 값을 1번에 있는 테이블에서 가져올 수 있다.

=INDEX($Y$2:$AK$25, MATCH(YEAR($A4), $Y$2:$Y$25, 0), MATCH(MONTH($A4), $Y$2:$AK$2, 0))

==>

=INDEX($Y$2:$AK$25, MATCH(1992, $Y$2:$Y$25, 0), MATCH(2, $Y$2:$AK$2, 0))

==>

=INDEX($Y$2:$AK$25, 1, 2)

..

이런 방법으로 반복을 하면 A열에 대한 값들을 W열에 구할 수 있다.(그림에서 3번 부분.)

..

사용한 함수는 크게,

Index와 Match 함수이다.

Year()와 Month() 함수는 생략하자.

..

..

..

Written by MayBeMayBe

January 15, 2015 at 21:29

Posted in Programming

Tagged with

JFreeChart – MultipleAxis Demo….

with one comment

 

 

..

..

..

 

..

 

..


public class MultipleAxisDemo
{
   /**
   * Creates the demo chart.
   *
   * @return The chart.
   */
   private static JFreeChart createChart() {
   XYDataset dataset1 = createDataset("Series 1", 100.0, new Minute(), 200);

   JFreeChart chart = ChartFactory.createTimeSeriesChart(
            "Multiple Axis Demo 3",
            "Time of Day",
            "Primary Range Axis",
            dataset1,
            true,
            true,
            false);

   chart.setBackgroundPaint(Color.white);
   chart.setBorderVisible(true);
   chart.setBorderPaint(Color.BLACK);
   TextTitle subtitle = new TextTitle("Four datasets and four range axes.");
   chart.addSubtitle(subtitle);

   XYPlot plot = (XYPlot) chart.getPlot();
   plot.setOrientation(PlotOrientation.VERTICAL);
   plot.setBackgroundPaint(Color.lightGray);
   plot.setDomainGridlinePaint(Color.white);
   plot.setRangeGridlinePaint(Color.white);

   plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
   XYItemRenderer renderer = plot.getRenderer();
   renderer.setSeriesPaint(0, Color.black);

   // AXIS 2
   NumberAxis axis2 = new NumberAxis("Range Axis 2");
   axis2.setAutoRangeIncludesZero(false);
   axis2.setLabelPaint(Color.red);
   axis2.setTickLabelPaint(Color.red);
   plot.setRangeAxis(1, axis2);

   plot.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_LEFT);

   XYDataset dataset2 = createDataset("Series 2", 1000.0, new Minute(), 170);
   plot.setDataset(1, dataset2);
   plot.mapDatasetToRangeAxis(1, 1);
   XYItemRenderer renderer2 = new StandardXYItemRenderer();
   renderer2.setSeriesPaint(0, Color.red);
   plot.setRenderer(1, renderer2);

   // AXIS 3
   NumberAxis axis3 = new NumberAxis("Range Axis 3");
   axis3.setLabelPaint(Color.blue);
   axis3.setTickLabelPaint(Color.blue);
   //axis3.setPositiveArrowVisible(true);
   plot.setRangeAxis(2, axis3);

   XYDataset dataset3 = createDataset("Series 3", 10000.0, new Minute(), 170);
   plot.setDataset(2, dataset3);
   plot.mapDatasetToRangeAxis(2, 2);
   XYItemRenderer renderer3 = new StandardXYItemRenderer();
   renderer3.setSeriesPaint(0, Color.blue);
   plot.setRenderer(2, renderer3);

   // AXIS 4
   NumberAxis axis4 = new NumberAxis("Range Axis 4");
   axis4.setLabelPaint(Color.green);
   axis4.setTickLabelPaint(Color.green);
   plot.setRangeAxis(3, axis4);

   XYDataset dataset4 = createDataset("Series 4", 25.0, new Minute(), 200);
   plot.setDataset(3, dataset4);
   plot.mapDatasetToRangeAxis(3, 3);

   XYItemRenderer renderer4 = new StandardXYItemRenderer();
   renderer4.setSeriesPaint(0, Color.green);
   plot.setRenderer(3, renderer4);

   // AXIS 5
   NumberAxis axis5 = new NumberAxis("Range Axis 5");
   axis5.setLabelPaint(Color.magenta);
   axis5.setTickLabelPaint(Color.magenta);
   plot.setRangeAxis(4, axis5);

   XYDataset dataset5 = createDataset("Series 5", 2500.0, new Minute(), 200);
   plot.setDataset(4, dataset5);
   plot.mapDatasetToRangeAxis(4, 4);

   XYItemRenderer renderer5 = new StandardXYItemRenderer();
   renderer5.setSeriesPaint(0, Color.magenta);
   plot.setRenderer(4, renderer5);

   return chart;
 }

..

..

MultipleAxis

..

..

..

..

 

Written by MayBeMayBe

May 14, 2014 at 19:40

Posted in Programming

Tagged with

Servlet…,,

leave a comment »

Written by MayBeMayBe

April 15, 2014 at 00:09

Posted in Programming

Tagged with ,

JavaScript – Select a complete table…,,

leave a comment »

 

 

..

Select a complete table with javascript (to be copied to clipboard)

http://stackoverflow.com/questions/2044616/select-a-complete-table-with-javascript-to-be-copied-to-clipboard

..

<code><script type="text/javascript">
    function selectElementContents(el) {
        var body = document.body, range, sel;
        if (document.createRange && window.getSelection) {
            range = document.createRange();
            sel = window.getSelection();
            sel.removeAllRanges();
            try {
                range.selectNodeContents(el);
                sel.addRange(range);
            } catch (e) {
                range.selectNode(el);
                sel.addRange(range);
            }
        } else if (body.createTextRange) {
            range = body.createTextRange();
            range.moveToElementText(el);
            range.select();
        }
    }
</code>
function showHideTable(strId)
{
 if (document.getElementById(strId).style.display == "none" ) {
 document.getElementById(strId).style.display="";
 }
 else
 {
 document.getElementById(strId).style.display="none";
 }
}
<code>

</script></code>

..

..

..

 

 

 

 

 

 

 

 

Written by MayBeMayBe

March 21, 2014 at 23:35

Posted in Programming

Tagged with

Chrome Extensions…

leave a comment »

 

..

http://dailyupgrade.me/post/5176583468/chrome-extension-development-overview

..

http://dailyupgrade.me/post/5320852086/chrome-extension-development-browser-actions

..

http://dailyupgrade.me/post/5759139172/chrome-extension-development-content-scripts

..

http://dailyupgrade.me/post/6707468769/chrome-extension-development-page-actions

..

..

..

http://developer.chrome.com/extensions/getstarted.html

..

..

HTML, CSS, JavaScript, HTML5…?

..

http://developer.chrome.com/extensions/overview.html

..

..

간단한 샘플 하나 돌려 보았는데, 모르겠다…

DB라고 하기에는 그렇고, 파일이나 구글 서버에 사용자 환경을 저장할 수 있다는 것 정도까지는 확인을 하였고…

..

..

특정 플랫폼인, Chrome Web browser에서만 작동한다는 것도 썩 맘에 들지는 않고..

주로 웹브라우저를 크롬을 쓰기는 하지만, 그래도 너무 하나에 매달려 있는 것은 사실…

..

 

..

 

 

Written by MayBeMayBe

February 16, 2014 at 13:31

Posted in Programming