様様なCSVファイルを一々EXCELで開けて、違うファイルあるいはシートからデータを参照するという仕事を効率化するお手伝いをします。

膨大なデータをバッチ処理などで処理できるので、非人間的なルーチンワークから時間を効率的・生産的にに使うことが出来るでしょう。LinkedInでも宣伝しておきました。強みは、UI(コンソールベース)をお好みにチューンアップできることです。

 

Using C language on Visual Studio, I can help you from boring jobs on text-base data manipulation and processing especially for some works using EXCEL and VLOOKUP. I will listen to the needs, think about the proper User Interface and create programs with Console-base interface which enables you to execute the batches over night.

 

問い合わせ先

mat.matsuka@xxxxxx..yyy

 

xの部分 <- gmail

yの部分 <- com

EOF

 前回はCSVファイルをEXCELで開けたときに、列番号を左から数えて何番目かの数値に変えるCプログラムを作ったが、VisualStudioCommunity でプログラミング中にその反対も必要となった。CプログラムでEXCELを意識した順番でデータ(セル)を並べるとき、隣の列を見るときは単にインクリメント(++)したい。また、EXCEL内で見たときにすぐセルが見つけられるように「AB」などのアルファベット番号で列を表示させなければならない。ログをとるときに一々変換表を見るのでは作る意味がない。

 この場合も相手はヘンタイ26進法であり、数学的なアルゴリズムは作りにくい。誰か作ったらGithubなどに公開してほしい。私は人間が数えながら表を作るプロセスをアルゴリズム化した。やはりアルファベット3桁には必要が今のところないので対応していない。

 

void 数値から列文字に変換(int num, char* retsu)
// 1番目から始まるVBAの列番号に変換 num->retsu: 1->A, 26->Z,256->IV
{
 char cell[10];
 char hitoketame = 'A';
 char hutaketame = 'A';
 int keta = 1;
 if (num == 0) {
  strcpy(retsu, "NA");
  return;
 }
 for (int i = 1; i <= num; i++)
 {
  if (keta == 1 && hitoketame <= 'Z')
  {
   retsu[0] = hitoketame;
   retsu[1] = '\0';
   hitoketame++;
   if (hitoketame > 'Z')
   {
    hitoketame = 'A';
    keta++;
   }
  }
  else if (keta == 2 && hutaketame <= 'Z')
  {
   if (hutaketame > 'Z' && hitoketame > 'Z')
   {
    puts("数値⇒VBA列番号変換は3桁には対応してません!Abort!");
    exit(5);
   }
   retsu[0] = hitoketame;
   retsu[1] = hutaketame;
   retsu[2] = '\0';
   hutaketame++;
   if (hutaketame > 'Z')
   {
    hitoketame++;
    hutaketame = 'A';
   }
  }
 }
 //printf("%d %s\n", num, retsu);
 return;
}