336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



엑셀 랜덤 함수 사용하기.(RAND와 RANDBETWEEN)

(Office 2013 기준)


엑셀을 사용하다 보면 임의의 난수를 뽑고 싶을때가 있습니다.


이럴 때 RAND 또는 RANDBETWEEN을 사용하시면 됩니다.


우선 포멧부터 보시겠습니다.


RAND() : 0 보다 크거나 같고 1보다 작은, 규등하게 분포된 난수를 구합니다.

(재계산 시에는 바뀝니다.) => 소수만 가능.(EX> 0.11231)


RANDBETWEEN(시작 값, 마지막 값) : 지정한 두 수 사이의 난수를 반환합니다. => 정수만 가능(EX>1, 5, 10 등)


아래 있는 항목으로 테스트를 하려고 합니다.


우측 설명처럼 체력은 0~1000까지 랜덤하게 나오게 할 것이고


치명확률은 0.0~1.0까지 랜덤하게 나오게 할 것입니다.




우선 체력 첫번째 셀(C2)를 선택하고 


= RAND라고 치다 보면 자동완성 기능으로 아래 그림처럼 나옵니다.


그러면 Tab키 또는 마우스 더블클릭 하시면 선택 됩니다.


(아니면 그냥 다 타이핑 하셔도 됩니다)



RANDBETWEEN을 먼저 하겠습니다.


RANDBETWEEN은 정수만 가능합니다. 


즉, 0.5572 같은 소수는 안됩니다.


체력은 0부터 1000까지 나오게 할 거이므로, 


= RANDBETWEEN(0, 1000) 으로 세팅합니다.


RAND함수를 사용해서 곱셈을 이요해서 하셔도 됩니다.




값이 나왓다면 아래로 쭉 끌어서 


모두적용 시킵니다.




이제 치명확률을 할 차례입니다.


0.0부터 1.0까지 나타나게 할 것이므로, 


= RAND() 를 사용합니다.




치명확률도 값이 나왔습니다.




아래로 쭉 끌어서 모두 적용 시켜줍니다.



RAND와 RANDBETWEEN은 사용법이 아주 간단합니다.


그런데 응용하려면 조금 생각을 해야 하는 함수이기도 하죠.


예를 들어 0.0 ~ 0.5까지만 랜덤으로 출력. 아니면 1~1000까지 수 중 랜덤으로 홀수만 출력 등.


다른 함수(또는 연산자입력해서)와 같이 사용해서 응용해야 겠지요.


여기까지 엑셀 랜덤함수 RAND와 RANDBETWEEN 이었습니다.




336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



엑셀 중복값 제거하기

(Office 2013 기준)


캐릭터가 사용할 스킬리스트를 만들었는데


중복된 것들이 너무 많았습니다.


정리가 필요해서 엑셀을 이용해 중복값을 제거하였습니다.


엑셀에서 마우스 몇 번 클릭하면 중복값 제거가 바로 가능합니다.


데이터가 총.. 100개? 정도 나왔습니다.


< 엑셀에서 중복값을 제거할 데이터 >




중복값을 제거하도록 하겠습니다.


먼저 (예제의 경우) B 라인(대상들)을 모두 선택합니다.


그리고 메뉴에서 데이터를 선택하시고,


중복된 항목 제거를 누릅니다.




그러면 다음과 같은 창이 뜹니다.


( 만약 하나의 열만 있다면 안나올 것입니다.)


(지금 저는 세개의 열이 있으므로 다음과 같은 창이 뜨는거구요.)


그러면 현재 열만 하면 되므로, 


"현재 선택 영역으로 정렬"을 선택하고 버튼 클릭.




그리고 확인을 눌러줍니다.




결과가 나왔네요.


저의 경우 총 102개에서 중복된 것 제거되고


30개가 나왔습니다.



엑셀은 정말 편한 것 같습니다.


도움 되셨길 바랍니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



- 유니티 버전 : 5.3.4f -



유니티3D 에디터(Editor) 캐시 삭제하기(Clean Cache)


어셋번들 매니저를 만들면서 테스트 하는데, 


단축키로 캐시삭제(Caching.CleanCache)를 하는데 불편함을 느껴서


에디터로 옮겼습니다.


*참고 : 캐시 삭제하는 함수는 Caching.CleanCache()입니다.


1분 작업량에 비해 많이 편하네요. 


우선 메뉴가 잘 만들어 졌는지 확인을 하겠습니다.


CleanCache라고 제가 만들어논 메뉴가 보이네요.




메뉴를 선택해보니 


오류없이 삭제되었다는 알림이 나왔습니다.




이제 정말 캐시가 삭제되었는지 확인을 해봐야 겠네요.


참고로 저는 지금 임시 UI로 


패치시스템을 만들고 있는 중입니다. (아주 간단하게..)


게임 실행을 해보니 13개 파일 받을게 있네요.




잘 받아지는지도 확인 해 보겠습니다.


13개가 차례대로 잘 받아집니다.




< 에디터 코드 >

using UnityEngine;
using UnityEditor;
using System.Collections;

public class PedtClearCaching {

    [MenuItem("Util/CleanCache")]
    public static void CleanCache()
    {
        if(Caching.CleanCache())
        {
            EditorUtility.DisplayDialog("알림", "캐시가 삭제되었습니다.", "확인");
        }
        else
        {
            EditorUtility.DisplayDialog("오류", "캐시 삭제에 실패했습니다.", "확인");
        }
    }
}


성공여부에 따라 팝업을 하나 띄워두었습니다.


Caching.CleanCache가 실패하는 경우는 


캐시를 사용하고 있을 때 입니다. 


혹시 실패가 뜬다면 유니티를 다시 껐다가 다시 켜보세요.


도움되셨길 바랍니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



- 유니티 버전 : 5.3.4f -



니티3D 에디터(Editor) 하위 폴더 순회하기(Recursion)


특정 폴더가 있고 그 하위 게임오브젝트에 어떠한 스크립트를 추가 할 일이 생겼습니다.


그런데 너무 많다보니 수작업으로는 안되겠더라구요.


그래서 에디터를 이용해서 추가하였습니다.


(실제 코드는 아래쪽에 작성하겠습니다.)


상단 메뉴로 Util을 만들고 하위에 두개의 메뉴를 만들었습니다.


하나는 스크립트 붙이는거, 다른 하나는 스크립트 제거하는거.




아래 그림에 있는 설명처럼 루트 폴더를 선택하고, 메뉴를 통해 스크립트를 붙여주면, 


프리팹 게임오브젝트에만 스크립트가 붙는걸 볼 수 있습니다.




다시 루트에서 제거하기 메뉴를 누르면


스크립트가 제거되는 걸 볼 수 있습니다.



< 에디터 코드 >


using UnityEditor;
using UnityEngine;
using System.Collections;
using System.IO;

public class PedtAutoAttachScript : Editor{
    [MenuItem("Util/AttachReApplyShaders")]
    public static void AttachReApplyShaders()
    {
        Object[] selectedAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

        foreach(Object obj in selectedAsset)
        {            
            GameObject gObj = obj as GameObject;
            if (gObj != null)
            {
                string str = AssetDatabase.GetAssetPath(gObj);
                // Skip FBX 
                string strExtension = Path.GetExtension(str);
                Debug.Log(strExtension);
                if (strExtension.ToLower().CompareTo(".prefab") == 0)
                {
                    // 이미 추가 되어있는지 검사.
                    PcAutoAttatch script = gObj.GetComponent();
                    if(script == null)
                    {
                        // 없으면 추가.
                        gObj.AddComponent();
                        Debug.Log("Asset name : " + obj.name + " Type : " + obj.GetType());
                    }                    
                }                
            }
        }
    }

    [MenuItem("Util/RemoveReApplyShaders")]
    public static void RemoveReApplyShaders()
    {
        Object[] selectedAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

        foreach (Object obj in selectedAsset)
        {            
            GameObject gObj = obj as GameObject;
            if (gObj != null)
            {               
                PcAutoAttatch script = gObj.GetComponent();
                if (script != null)
                {
                    Debug.Log("Asset name : " + obj.name + " Type : " + obj.GetType());
                    DestroyImmediate(script, true);
                }
            }
        }
    }
	
}


에디터를 통해 자동화가 된다면 최대한 사용해야겠죠?


도움 되셨길 바랍니다.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



유니티 버전 : 5.3.4f


유니티3D 5.x (Unity3d 5) 어셋번들 매니저(AssetBundle Manager)


어셋번들(AssetBundle) 관련 사항들이 유니티 4.x와 5.x가 많이 달라졌습니다.


그래서 간단한 테스트로 정리해봅니다.


AssetBundle 빌드하는건 에셋스토어나 유니티 사이트에 있으니 미리 다운 바랍니다.


에셋스토어 링크 : https://www.assetstore.unity3d.com/kr/#!/content/45836



우선 저는 다음과 같은 구조로 만들었습니다.


DataForCDN이라는 폴더 내에 있는 데이터들을 어셋번들로 만들 계획입니다.


테스트를 위해 두 종류로 만들것입니다.


1. GoblinsB 폴더.


2. Beholders에 있는 Prefabs폴더에 있는 프리팹 한개.




그리고 Script에 있는 ReApplyShaders가 스크립트가 있는데 (NonCachingLoad는 신경쓰지마세요)


하는 역할은 머테리얼에 있는 쉐이더를 재적용 해주는 스크립트 입니다.


유니티5 로 어셋번들(assetbundle)을 묶어서 로드하게 되면


쉐이더가 적용 안되는 버그가 있습니다. 그래서 저렇게 (우선은..) 하고 있습니다.


저는 미리 로드할 프리팹(아래보이는 화면)에 저 스크립트 붙여놨습니다. 


< ReApplyShaders 코드 >


using UnityEngine;
using System.Collections;

public class ReApplyShaders : MonoBehaviour {

    Renderer[] renderers;
    Material[] materials;
    string[] shaders;

    void Awake()
    {
        renderers = GetComponentsInChildren();
    }

    void Start()
    {
        foreach (var rend in renderers)
        {
            materials = rend.sharedMaterials;
            shaders = new string[materials.Length];

            for (int i = 0; i < materials.Length; i++)
            {
                shaders[i] = materials[i].shader.name;
            }

            for (int i = 0; i < materials.Length; i++)
            {
                materials[i].shader = Shader.Find(shaders[i]);
            }
        }
    }
}




GoblinsB를 어셋번들로 만들기 위해 폴더 선택을 하고 다음처럼 이름을 써 줍니다.


확장자는 쓰지 않으셔도 되고 써도 됩니다.


그리고 저는 지금 대/소문자로 막 썼는데, 실제 대문자는 인식되지 않습니다.


(대문자로 써도 소문자로 바뀝니다. 보기 쉽게 저렇게 썼습니다)




두번째 AssetBundle로 BeholderGreen을 만들어 줍니다.




이제 마우스 오른쪽(또는 상단메뉴)를 통해 Build AssetBundles를 해줍니다.




그러면 다음처럼 진행이 됩니다.




Assetbundle Manager를 유니티에서 제공한 것을 사용했다면, 


프로젝트 폴더에 AssetBundles라고 폴더가 생기고 플렛폼이름 하위로


다음처럼 번들들이 생겼을 것입니다.


시간이 되신다면 manifest파일 한번씩 열어보시기 바랍니다.




실제 로드 테스트를 위해 위의 파일들을 다른 경로로(저는 E드라이브로) 옮겨줍니다.




이제 다음 코드를 붙여서 테스트를 해보도록 하겠습니다.


< 어셋번들 로드 하는 코드 >


using UnityEngine;
using System.Collections;

public class NonCachingLoad : MonoBehaviour {
    
    public string URL = "file:///E:/Android/";

	// Use this for initialization
	void Start () {
        
	}
	
	// Update is called once per frame
	void Update () {
	    if(Input.GetKeyDown(KeyCode.A))
        {
            StartCoroutine(Down());
        }
	}

    IEnumerator Down()
    {        
        WWW www = new WWW(URL + "Android");

        yield return www;

        if (!string.IsNullOrEmpty(www.error))
        {
            Debug.Log(www.error);
            yield break;
        }

        // 메니페스트 얻기
        AssetBundle bundleManifest = www.assetBundle;
        www.Dispose();
        AssetBundleManifest assetBundleManifest = bundleManifest.LoadAsset("AssetBundleManifest");
        // 메니페스트가 가지고 있는 모든 어셋번들 이름을 가져옵니다.
        // 여기에서는 두개가 나오겠죠.
        string[] assetBundleNames = assetBundleManifest.GetAllAssetBundles();
        // 어셋번들 갯수만큼 돌면서 게임오브젝트를 만들겠습니다.
        for (int i = 0; i < assetBundleNames.Length; i++)
        {            
            string assetBundleName = assetBundleNames[i];
            // 이미 캐쉬되어있는지 확인
            bool bCaching = Caching.IsVersionCached(URL + assetBundleName, assetBundleManifest.GetAssetBundleHash(assetBundleName));
            // 로그 찍어본다.
            Debug.Log(assetBundleName + " Cash : " + bCaching.ToString());

            // 어셋번들을 다운로드 합니다.
            // 저는 URL과 해쉬값으로 로드하겠습니다.(해쉬값은 메니페스트에 있습니다.)
            www = WWW.LoadFromCacheOrDownload(URL + assetBundleName, assetBundleManifest.GetAssetBundleHash(assetBundleName));
            yield return www;
            AssetBundle bundle = www.assetBundle;

            string[] names = bundle.GetAllAssetNames();
            for (int j = 0; j < names.Length; j++)
            {
                // 하나의 어셋번들이 가지고 있는 리스트롤 로그에 찍을꺼에요.
                Debug.Log(names[j]);
                // GameObject인 것만 생성(여기에서는 프리팹만 나오겠죠)
                GameObject gObj = bundle.LoadAsset(names[j]);
                if (gObj != null)
                    Instantiate(gObj);
            }
           
            // 번들을 언로드해줍니다.
            bundle.Unload(false);
            www.Dispose();
        }      
    }
}


스크립트를 아무대나 링크시키고 실행을 해보면


다음처럼 로드가 됩니다. 사실 끝난거죠.




이제 버전관리를 위해(패치는 해야하니까) 고블린 중에 하나 이름을 바꾸겠습니다.




그리고 다시 AssetBundle build를 하고 아까 그 폴더로 복사/붙여넣기 합니다.


그리고 다시 플레이를 해보세요.


아래 로그 보이시나요?


고블린 어셋번들이 캐쉬에 저장이 안된 상태로 되어있습니다.


좀전에 이름을 바꿨으니깐요.



실제 버전관리, 암호화 등을 하려면 관리자를 만들어야 합니다.


현재 포스팅은 기본적인 개념을 위해 작성한 것이니 


여러 테스트를 해보시고 잘 만드시길 바랍니다.



참고 : http://dev.suriyun.com/bay/technical/unity-asset-bundle-part-2/



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



- NGUI 버전 : 3.9.8 -


NGUI 스프라이트 기초 및 응용


유니티 5.x 가 들어오기 전부터 NGUI를 사용해서 


UGUI보다는 NGUI가 편하네요. 그리고 얼마전에 최신버전으로 업그레이드 했습니다.


기능이 좀 추가된 것 같네요.


우선 Sprite는 버튼, 스크롤뷰, 토글 등 을 사용하기 위해 기본적으로 필요한 요소입니다.


그래서 간략하게 정리 하려고 합니다.


아무것도 없는 상태에서 상단 메뉴 NGUI -> Create -> 2D UI를 만들어 줍니다.


NGUI를 사용하기 위해서는 무조껀 필요합니다.




스프라이트를 넣을 빈 게임 오브젝트를 하나 만듭니다.


메뉴를 통해서도 생성할 수 있지만, 


단축키가 빠르고 편하니 단축키를 눌러줍니다.


그러면 하단처럼 GameObject가 생성됩니다.




이제 스프라이트를 넣으려고 합니다.


Add Component를 눌러 uisprite를 치면 다음처럼 스크립트가 나옵니다.


선택해서 집어넣어 줍니다.




이제 이미지 세팅을 해 줍니다.


아틀라스를 선택하여 그 안에 이미지를 선택만 하면 됩니다.


저는 NGUI 샘플에 있는 Wooden Atlas를 선택하겠습니다.


(샘플이 없으신 분은 아틀라스를 만드셔서 해야합니다.)




이미지나 생겼네요. 기본 사이즈로 100 x 100으로 잡혀있습니다.




우측에서 Type을 보시면 아래 그림처럼 리스트가 나타납니다.


아래 설명을 읽어보시면 이해하는데 조금 도움이 될것 같네요.


제 경험으로는 Sliced가 가장 많이 사용되네요. 이것 저것 바꿔보시면 이해가 빨리 되실꺼에요.




NGUI를 업데이트 했더니 Sprite에 Gradient 기능이 생겼더라구요.


항상 이미지 새로 만들어서 했었는데


기능이 생겨서 다행이네요.




전체적인 색상도 바꿀 수 있습니다.


코드로 바꾸는 걸 간단히 해보도록 할께요.


C# 스크립트를 만들고 (이름은 원하는대로) 다음 코드를 넣어 줍니다.



using UnityEngine;
using System.Collections;

public class ChangeSpriteColor : MonoBehaviour {

    // 대상 스프라이트
    public UISprite sprite;
    // 변경할 색상    
    public Color color;
	// Use this for initialization
	void Start () {
	    // 기본값으로 white
        color = Color.white;
	}
	
	// Update is called once per frame
	void Update () {
        // 실시간 색상변경
        sprite.color = color;
	}
}


그리고 아까만든 GameObject에 연결해주고 링크 시켜줍니다.


실행시키고 Color를 눌러서 색상을 변경해보세요.


다음처럼 변경이 됩니다.



NGUI의 스프라이트(Sprite)는 정말 간단하지만 가장 중요하지 않나 싶네요.


다음에는 버튼을 만들고 버튼 이벤트와 트윈효과 등을 넣어보겠습니다.


'게임 프로그래밍 > NGUI' 카테고리의 다른 글

[NGUI] 토글버튼(Toggle) 제어  (0) 2016.07.13
[NGUI] 토글버튼(Toggle)  (0) 2016.07.02
[NGUI] 버튼과 레이블  (0) 2016.06.07
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



엑셀 VBA를 이용해 CSV를 UTF-8로 Export하기

(Office 2013 기준)


기본적으로 엑셀 시트를 CSV로 저장하게 되면 인코딩이 ANSI로 되어있습니다.


< CSV로 저장했을 때의 인코딩 >


인코딩을 바꾸려면 모메장으로 열고 인코딩을 직접 바꿔주어야 하는데


데이터가 많을 경우 시간이 걸리는 작업입니다.


VBA를 이용하여 매크로를 만들면 이런 번거러운 작업을 없앨 수 있습니다.


테스트를 위해  이전 포스팅 한 데이터(VLOOKUP 사용하기)를 이용하여 하도록 하겠습니다.


우선 개발도구 탭에 있는 Visual Basic을 클릭합니다.


(개발도구 탭이 없으신 분은 여기 눌러Step 3을 보시기 바랍니다)




그럼 다음과 같이 개발 툴이 나타납니다.




매크로를 만들기 위해서 


상단 메뉴 삽입 -> 모듈 을 클릭합니다.




그리고 다음 사이트를 들어가서 코드를 모두 복사합니다.


그리고 붙여넣기를 해줍니다.


링크 클릭




이제 다시 엑셀 파일로 돌아옵니다.


버튼을 하나 만들어서 매크로가 실행되게끔 해야합니다.


개발도구에서 삽입을 누르고, 단추(버튼)을 클릭합니다.


그리고 아무 셀쪽에 가서 드래그를 하게 되면




이런 창이 나타나게 됩니다.


WriteCSV가 보이는데, 이게 아깝 복사/붙여넣기 한 매크로 입니다.


선택하시고, 매크로 위치는.. 그냥 현재 통합 문서로 하도록 하겠습니다.


그리고 확인.




창이 닫아지면 아까 드래그 해서 만든 버튼이 저렇게 보여집니다.




단추를 딱 클릭을 하면 다른 이름으로 저장 창이 나타나는데,


파일 형식이 바로 CSV로 되어있습니다. 


아무 이름이나 하고 저장을 할께요.




저장이 완료되면 다음처러 "다 되었다"라고 창이 하나 뜹니다.




이제 확인만 하면 됩니다.


저장된 파일을 메모장으로 열고, 


다른 이름으로 저장을 눌러보면 인코딩을 볼수 있습니다.


UTF-8로 되어있습니다.  잘 되네요.



관심 있는 분들은 VBA 검색하셔서 공부해보세요.


자동화 해두면 나중에 아주 많이 편리하니 도움되실 꺼에요.



** 추가 **


해당 링크로 가서 받은 코드에 약간의(?) 문제가 있습니다.


최대 10라인만 되도록 되어있더라구요.


코드 조금 수정하겠습니다.


아래 빨간색으로 된 부분만 수정/추가해 주시면 되겠습니다.


(다른 방법도 있겠지만, 간단히 처리했습니다.)


.....

For r = 1 To 10000

s = "" 

c = 1 

 If IsEmpty(wkb.Cells(r, c).Value) Then 

 Exit For 

 End If 

 While Not IsEmpty(wkb.Cells(r, c).Value) 

 s = s & wkb.Cells(r, c).Value & ","

 c = c + 1 

 Wend 

 BinaryStream.WriteText s, 1

 Next r

....





'게임 프로그래밍 > 엑셀' 카테고리의 다른 글

[엑셀] 램덤 함수(RAND, RANDBETWEEN)  (0) 2016.05.31
[엑셀] 중복값 제거하기.  (0) 2016.05.31
[엑셀]VLOOKUP 사용하기  (0) 2016.05.22
[엑셀]엑셀 드롭다운 만들기  (0) 2016.05.22
[엑셀]이름 정의  (2) 2016.05.22
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



엑셀 VLOOKUP 사용하기



LOOKUP 함수는 표나 범위에서 행 또는 열 기준으로 항목을 찾을 경우 사용합니다.


VLOOKUP(Vertical Lookup : 세로 기준)과 HLOOKUP(Horizontal Lookup : 가로 기준)이 있습니다.


여기에서는 VLOOKUP을 사용해 보려고 합니다.


VLOOKUP의 구문(출처 : MSDN)




이전 포스팅들을 이용해서 사용을 할 것인데, 우선은 한 시트 안에서 처리하도록 하겠습니다.


왼쪽 상단이 기본 데이터이고, 데이터 참조를 하여 똑같이 값을 구성하였습니다.


그리고 [ 장비 ] 값들에 우측 [ 장비데이터 참조 ]의 인덱스를 표시하려고 합니다.




현재는 무기, 방어구, 장신구 로 표시되어 있으므로 


VLOOKUP을 이용하여 인덱스를 표시 하도록 하겠습니다.


첫번째 들어갈 내용은 조회하려는 값입니다. 


여기에서는 "무기" 가 되겠습니다. 


"무기"를 선택하면 다음처럼 상대주소(C2)가 설정됩니다.


(상대주소, 절대주소, 혼합주소는 다음에 포스팅 하겠습니다)




그리고, 두번째에 들어갈 내용은 반환 값을 검색하는 셀의 범위입니다.


여기에서는 주황색으로 되어있는 부분은 영역이 되겠습니다.


그래서 저렇게 영역을 드래그 하면 상대주소가 설정됩니다.


또는 이전 포스팅(이름정의하기)를 통하여 영역을 지정해도 됩니다.


예를 들면, VLOOKUP(C2, NAME1,..) 이런식으로도 가능합니다.




세번째에 들어갈 내용은 이전에 잡았던 영역에서 몇번째 데이터를 보여줄 것인가 입니다.


참고 : 가장 왼쪽에 있는 열에서 1부터 시작합니다.

여기에서는  "장비데이터 참조"에 이름이 1번, 인덱스가 2번, 설명이 3번입니다.


우리는 "무기"라는 이름 대신 "1"이라는 인덱스 값을 보여주고 싶으므로


2 라고 설정합니다.


(만약 1이라고 설정한다면 이름 항목이 나올것이고, 3을 설정하면 설명 항목이 나오게 됩니다.)




마지막에 들어갈 내용은 유사한것을 찾을 것인지, 완전히 일치하는 것을 찾을 것인지 입니다.


여기에서는 완전히 일치할 경우로 설정하겠습니다.




모두 세팅이 되었습니다. 자동채우기를 한 다음에 결과화면은 다음과 같습니다.


< 결과 >



현재까지 한 내용으로 ExportData쪽에 세팅을 하게되면 다음과 같은 결과를 얻게 됩니다.


(ITEM_REF는 네이밍 포스팅에서 LOOKUP에서 사용할 영역을 잡아논 것입니다.)



도움 되셨길 바랍니다.




336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



[엑셀] 드롭다운 만들기


엑셀 이름 정의하기 데이터를 가지고 하도록 하겠습니다.


우선 시트를 하나 만들고 아래처럼 데이터를 넣도록 합니다.


저는 OriginData라는 시트를 만들고 다음처럼 하였습니다.


그리고 장비부분에서 드롭다운 데이터를 넣도록 할 예정입니다.


이제 장비 부분에서 주황색으로 네모 처진 부분을 선택하고, 


데이터 -> 데이터 유효성 검사 를 클릭합니다.




그러면 데이터 유효성 검사 창이 나타납니다.


이 창에서 드롭다운 변경/삭제 등을 하실 수 있습니다.


그리고 설정에서 제한 대상을 목록으로 바꿔줍니다.




그리고 원본 부분에서 드롭다운 메뉴가 들어갈 리스트를 위해 영역을 선택합니다.


저의 경우 Naming 시트에 이름쪽을 리스트로 사용하겠습니다.


그리고 확인을 눌러줍니다.




이제 데이터를 보시면 드롭다운이 나타나는 것을 확인하실 수 있습니다.


현재 C:2 셀만 적용되어있으므로, 아래로 쭉 끌어서 모두 적용되게 해주세요.



도움되셨길 바랍니다.


'게임 프로그래밍 > 엑셀' 카테고리의 다른 글

[엑셀]VBA를 이용해 CSV를 UTF-8로 Export하기  (0) 2016.05.22
[엑셀]VLOOKUP 사용하기  (0) 2016.05.22
[엑셀]이름 정의  (2) 2016.05.22
[엑셀]다른 시트 값 가져오기  (0) 2016.05.22
[엑셀] xml 만들기.  (5) 2015.09.10
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


엑셀 이름 정의하기


엑셀에서 이름을 정의하여 영역들을 쉽게 관리할 수 있습니다.


또한 수식에서도 편리하게 사용할 수도 있습니다. (이 부분은 LOOKUP할 때 다시 설명하겠습니다.)


이름을 설정하기 위해 다음과 같은 데이터를 만들었습니다.


< 기본 데이터 >


데이터 영역의 이름을 정의하기 위해 방금 작성한 데이터를 선택합니다.


그리고 우측 상단에 이름을 넣고 엔터를 치시면 이름정의가 완료됩니다.



만약 정의한 이름을 변경, 삭제 등을 할 경우에는 


수식 -> 이름관리자 를 통해서 가능합니다.



이름 관리자를 누르면 좀전에 정의한 이름에 대한 정보가 나타납니다.


이곳에서 변경, 삭제 등을 수행 할 수 있습니다.


함수를 사용할 때 영역을 지정하는 것보다 이름을 지정하여 사용하는게


이해도 쉽고, 관리도 쉽습니다.


도움되셨길 바랍니다.


+ Recent posts